一、Python简介Python是一门解释性编程语言,既年长又年轻的语言。它诞生于1989年,近些年,人工智能的复兴,给它注入了新的活力。 Python之父 “Python”的中文翻译“蟒蛇”,因为 Python之父Guido van Rossum,就是这位头发浓密的大叔,喜欢蟒蛇。 Python的主流版本又分为 2.X 和 3.X,2.X 已经停止维护,目前Python已经发布到了 3.11.2 版本。 二、环境准备我们来看一下在Windows环境下Python的安装。
Python下载
Python安装
Python版本
pip 三、编辑器准备Python提供了交互式运行工具Python Shell,直接输入一行代码: print('Hello World.') 万物之始:Hello World. 打印输出 当然,日常开发肯定不会使用这种交互式的方式,而是使用文件的方式,那么Python文件的编辑器一般使用什么呢? Python因为是解释性语言,可选的编辑器有很多:Pycharm、Jupyter、Sbulime Text、VSCode…… 功能最强大的肯定是Pycharm,但是因为占内存,最重要的是得花钱,所以我一般用VSCode。
Python Snippets
Python extension for Visual Studio Code
LiveCode for python
Sourcery
IntelliCode
Python Indent
Python Test Explorer
还有其它的一些好用的插件,大家可以自行探索—— 如果有的选,建议Pycharm。 我们来简单体验一下VSCode编写Python代码:
创建文件夹
hello.py
运行 至此,Python开发环境就已经准备好了,那么我们开始学习Python基础语法。 四、基本命令Python是一门非常简单的语言,我们前面的print就是非常简单的打印操作。 Python是一门解释性语言,有点类似shell,对缩进要求比较严格,以Tab键或者4个空格进行缩进。 例如,这一段代码就有语法错误: 语法错误 需要改成: 正确缩进 Python的注释,使用#: 注释 在VSCode里可以使用快捷键Ctrl+/快速注释: 快速注释 五、数据类型Python是一种面向对象的编程语言,所有的数据类型都是类,每个数据值都是类的“实例”,并且不需要显式声明变量的类型。 在Python中有6种主要的内置数据类型:数字(Number)、字符串(string)、列表(list)、元组(tuple)、集合(set)和字典(dict)。 5.1 数字(Number) Python中常用的数字类型有两种:整数(int)、浮点(float)。 我们在Python Shell里进行一些数字的操作:
>>> num=1>>> print(num)1
其中/会永远返回浮点数float,Python只支持双精度的浮点数float,返回int需要用//
>>> int_num=int(8.8)>>> print(int_num)8 Python 支持其他类型的数字,例如Decimal and Fraction。Python 还内置了对复数(complex)的支持,当然,用的也不多。 5.2 字符串(string) 字符串是最常用的数据类型,它可以放在单引号''里,也可以放在双引号“”里。
>>> 'Python is'+'good''Python isgood'
>>> int('666')666>>> float('66.6')66.6>>> str(888)'888'
>>> str='There is a hard people.'>>> str.find('hard')11>>> str.replace(' ','|') 'There|is|a|hard|people.'>>> str.split('|')['There is a hard people.'] 5.3 列表(list) 线性表这种数据结构我们都比较熟悉,Python中的实现是list,类似于Java中的ArrayList,list中可以放入任意类型的变量:
>>> list1[2] 'Study'
>>> list1.insert(1,'Should')>>> print(list1)['Python', 'Should', 'Good', 'Study']
>>> list.remove(60)>>> print(list)[80, 90, 70] 5.4 元组(tuple) 列表(list)是一种可变的序列类型,元组(tuple)是一种不可变的序列类型,由多个用逗号隔开的值组成:
5.5 集合(set) 集合(set)是一种可迭代的、无序的、不能包含重复元素的容器类型的数据,类似于Java中的Set。 >>> set={50,50,60,90,70,60}>>> print(set){50, 60, 90, 70}
5.6 字典(dict) 字典(dict)是一种key,value类型的数据结构,类似于Java中的Map。 >>> tel = {'jack': 4098, 'sape': 4139}>>> print(tel){'jack': 4098, 'sape': 4139}
>>> tel['Tommy']=9876>>> tel['sape']=5925 >>> print(tel){'jack': 4098, 'sape': 5925, 'Tommy': 9876}
好了,基本的数据结构我们都盘点完了,还有一些api,这里没有给出,建议大家可以直接查看api doc。 doc 六、流程控制每个语言里都有条件语句、循环语句等等流程控制语句,我们来看看Python中的条件语句和循环语句。 6.1 条件语句 if语句 # 从控制台获取输入score=int(input('请输入你的分数:'))if score>=90: print('优秀') if score>=80 and score<90: print('良好') if score>=60 and score<80: print('及格') if score<60: print('不及格') 运行结果: 运行结果
if-else
if-elif-else # 从控制台获取输入score=int(input('请输入你的分数:'))if score>=90: print('优秀') elif score>=80: print('良好') elif score>=60: print('及格') else: print('不及格') 6.2 循环语句 Python支持两种循环语句:while和for。 while
for Python中的for比较特殊,只能迭代列表、字符串等任意序列,不能迭代算数递增值,或者定义结束条件。 names=['张三','李四','王五','赵六']for name in names: print(name) 运行结果: for 如果想对数字序列进行迭代呢?那就得用到range()函数:
如果想要跳出循环,或者跳过本次循环呢? break/continue
for i in range(10): if i>3: #跳出循环 break print(i)
容器类型循环 一些集合类型的循环,比如列表、字典,还是非常常用的。 列表循环
nums=[1,3,5,7,9]for i in nums: print(i)
persons=['张三','李四','王五']for i,v in enumerate(persons): print(i,v) 字典遍历 字典是<key,value>类型的结构,遍历和序列结构有一些不一样
person_dict={'张三':26,'李四':22,'王五':33}# 遍历keysfor k in person_dict.keys():print(k,person_dict[k]) # 不用keys()也可以 for k in person_dict:print(k,person_dict[k])
七、函数我们在写代码的过程中,有很多重复的逻辑,这时候就应该考虑复用这些逻辑,那么就应该定义一些函数(Functions)。 比如下面一段代码,创建一个函数,计算长方形的面积: # 定义函数,计算长方形面积def get_area(height,width): area=height*width return area# 调用函数:实参顺序和形参一致area=get_area(12,8)print(area)# 调用函数:直接指定形参,顺序无限制area=get_area(width=9,height=15)print(area) 在这个简单的函数里:
在调用的时候,如果不直接指定形参,那么实参的顺序要和形参一致。 八、模块上面我们学习了Python的函数,通过函数我们可以实现很多代码的复用,但是问题来了,所有的函数我们也不能都写在一个文件里,那到后面这个文件就膨胀地不像话了,必须拆分文件。 那么文件拆分后,里面的函数怎么调用呢?这就得用到Python的模块了。
main.py # 导入模块import calculate# 使用模块名调用函数print(calculate.add(5,6)) 如果模块名太长了,也可以给模块设置别名:
假如模块里定义的函数太多了,而我们只需要用某一个函数,或者某几个函数,怎么办?可以只导入模块中的函数: # 导入模块中的函数from calculate import add#使用模块名调用函数print(add(5,6)) Python中也内置了很多模块,常用的有math、datetime、os等等。 例如,利用datetime获取当前年月:
更多的标准库,可以直接查看官方的api文档。 九、面向对象Python是一门面向对象的语言,面向对象是为了更好地复用代码,接下里,我们看看面向对象的三大特征:封装、继承、多态在Python里是怎么实现的。 9.1 类和对象 所谓类就是某个类型,比如人类,所谓对象,就是类的实例,比如张三。 class Person: def say_hello(n): print('你好')zhansan=Person()zhansan.say_hello() 这段代码里定义了一个类Person,类里定义了一个方法say_hello,实例化了一个对象zhangsan,调用了方法。 类里可以有这些成员: 类的成员
在类中:
我们接下来,看看面向对象的三大特征在Python里是怎么实现的。 9.2 封装/继承/多态封装 封装就是隐藏对象的内部细节,外部只管调用就行了。 Python中的变量默认是公开的,可以在外部的类中访问它们,如果想让它们变为私有变量,在变量前加上双双下画线(__)就行了,变量的获取和设置可以通过get()、set()方法。 class Programer: # 构造方法,初始化成员变量 def __init__(self,name): # 创建初始化实例变量:姓名 self.name=name # 创建和初始化私有实例变量:_level self._level='' # 实例方法 def write_bug(self): print(self._level+self.name+'正在写bug中。。') # get方法 def get_level(self): return self._level # get方法 def set_level(self,level): self._level=level # 实例化programer =Programer('张三') # 设置私有变量programer.set_level('高级工程师') # 调用成员方法 programer.write_bug() # 使用get方法获取私有变量 print(programer.get_level()) 继承 我们现在让Programer继承Person,继承语法很简单,在类后()里指定继承的类就行了,可以一个,也可以多个。
多态 Python同样支持多态,对于继承,实现多态的方式,就是重写父类的方法: from Person import Person# 继承Personclass Programer(Person): # 构造方法,初始化成员变量 def __init__(self,name): # 创建初始化实例变量:姓名 self.name=name # 创建和初始化私有实例变量:_level self._level='' # 实例方法 def write_bug(self): print(self._level+self.name+'正在写bug中。。') # get方法 def get_level(self): return self._level # get方法 def set_level(self,level): self._level=level # 重写父类方法 def say_hello(self): print(f'一介开发{self.name}向您问好!') # 实例化programer =Programer('张三') # 设置私有变量programer.set_level('高级工程师') # 调用成员方法 programer.write_bug() # 使用get方法获取私有变量 print(programer.get_level()) # 调用重写了的父类方法programer. say_hello() 十、异常处理对于开发工程师而言,日常最苦恼的事情大概就是写bug和找bug了。 有些时候,我们不希望因为某些错误,导致整个程序停止,那么我们就可以利用try/except语句来捕获异常。 比如下面的代码,用5/0:
结果就发生了异常: ZeroDivisionError: division by zero 我们可以捕获这个异常:
在这段代码里,我们捕获了异常,并把它打印了出来,我们也可以用pass空语句,不对异常做任何处理: try: num=5/0except Exception as e: pass 我们还可以使用finally子句,定义所有情况下都必须执行的操作:
十一、小结在这篇文章里,我们快速过了一遍Python环境的搭建,以及各种基础语法,包括数据类型、流程控制语句、函数、模块、面向对象、异常处理。大家可以看到,Python是一门相对比较好上手的语言。我们可以先掌握Python基础,把它用起来,用的过程中,再通过文档、搜索引擎、ChatGPT等等,不断加深对细节的掌握。 |
|