Python 语法
搞懂Python语言运行的基本规则
编码
Python 2.x默认的字符和文件编码都是ASCII,Python 3.x默认的字符编码是unicode,默认的文件编码是UTF-8。在工作中遇到不同编码的问题,需要对编码进行转换,在Python中UTF-8或者是GBK编码的转换要经过Unicode。
关键字
Python 中的关键字不能用作任何变量的名称,Python 3.8.3中有33个关键字分别是,在终端输入命令语句,如下图所示。
>>> import keyword
>>> keyword.kwlist
执行结果如下:
[ 'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注释
1、单行注释:在行首加 “#”,比如:
# 你好,我是单行注释
print ("Hello, World!")
print ("Hello, World!")
# 你好,我是行末注释
2、多行注释:可以在多行的行首前加“#”或是在整段需要注释的内容首尾加'''或"""三重引号。
方法一:逐行注释
#单行注释1
#单行注释2
#单行注释3
print ("Hello, World!")
方法二:三个单引号进行注释
'''
单行注释2
单行注释2
单行注释3
'''
print ("Hello, World!")
方法三:三个双引号进行注释
"""
单行注释2
单行注释2
单行注释3
"""
print ("Hello, World!")
命名
模块名:使用下划线连接多个小写字母,例如:cat_action。
包名:使用“.”符号连接多个小写字母,例如:com.lidihuo.cat。
类名:首字母需大写,其它字母小写的单词,例如:Cat。
变量命名:变量名由字母、数字和下划线构成,数字不能开头,不要跟关键字和系统保留字冲突,建议名称采用小写字母单词。
函数和属性名:应全部使用小写字母,多个单词之间用“_”下划线分割。
常量命名:应全部使用大写字母,多个单词之间用“_”下划线分割。
模块内部的类名:采用 "下划线+首字母大写" 的形式,如 _Cat。
运算符
Python的运算符包括:算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
算术运算符:主要用于加减乘除等运算,运算符有:“+、-、 *、/、%、**、//”。
比较运算符:用于对象之间的比较,运算符有:“==、!=、<>、>、<、>=、<=”。
赋值运算符:用于对象的赋值,运算符有:“=、+=、-=、*=、/=、%=、**=、//=”。
逻辑运算符:用于逻辑运算,运算符有:“and、or、not”。
位运算符: 把数字看作二进制计算。运算符有:“&、|、^、~、<<、>>”。
成员运算符:判断一个对象是否包含另一个对象,运算符有:“in、not in”。
身份运算符:判断是不是引用自一个对象,运算符有:“is、is not”。
数据类型
Python中数据类型可以分为2大类,值类型和组类型。
组类型:组类型的成员类型有:序列(字符串、列表、元组)、集合和字典。
空值
在 Python 中空值不表示 0,也不表示空字符串,而表示没有值,空值也不代表空对象,与 []、“”也不同。空值用None表示,属于NoneType类型。
None 常用于判断函数有无返回值,在没有 return 语句的函数,都会在末尾加上 return None,使用不带值的 return 语句,函数就会返回 None。
缩进与空行
缩进:Python不同于其它的编程语言,Python没有用“{}”包裹代码块,而是用缩进来表示,所以代码的缩进成为了程序的重要组成部分,同一层级的代码块中缩进的空格数必须相同。
if 1==1:
print ("success")
else:
print ("fail") #同一层级缩进空格数不同,引发异常
空行:函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
多行连接
在Python中一行写不完的语句可以用“\”符号来连接,比如:
print (''Hello Python,\
I am \
lidehuo')
需要注意的是在(),{},[] 中无需用“\”连接,可以直接换行,比如:
animal = ['cat','dog','tiger',
'cow','horse','pig'
'bat','cock','bear']
输入和输出
输入:使用input([prompt])读取一行,将其转换为string类型并返回,input的参数可有可无,通常在控制台输入一些数据,然后敲击回车,就完成了本次输入。比如:
animal = input("请输入动物名称: ")
print(animal)
需要注意的是input返回的是string类型,想要得到其它数据类型,还需要进行类型转换。
输出:一般使用print进行输出,比较简单,比如:print ('Hello World'),当输出的内容包含变量时,可以用“,”连接,比如:print '数组为:',list。
模块导入
Python代码中进行模块导入非常高频。Python模块导入机制其实非常灵活。具体包括:常规导入、from语句导入、相对导入、可选导入和本地导入。
常规导入:使用“import”,导入多个包或模块时用“,”分隔,比如:import time,os。
from语句导入:这个场景时候导入一个模块或库的部分功能,格式为:from xxx import xxx。比如:from datetime import datetime。
相对导入:python中使用句点来决定如何相对导入其他包或模块,比如:from . import xxxx
可选导入:主要用于优先或备选使用某个模块或包,语句操作结构为:
try:
from xxx import xxx
except ImportError:
from xxx import xxx
局部导入:在Python脚本的顶部导入一个模块,那么将该模块是全局作用域,如果想要局部作用域,导入语句都应该位于模块的顶部即可。
异常
Python 完整的异常处理结构如下:
try:
#业务实现代码
except Exception1 as e:
#异常处理块1
...
except Exception2 as e:
#异常处理块2
...
#可以有多个 except
...
else:
#正常处理块
finally :
#资源回收块
...
整个异常处理结构中try块是必需的,但是也不能只使用 try 块,要么使用 try except结构,或是 try finally 结构;可以有多个 except 块,多个 except 块必须位于 try 块之后,finally 块必须位于所有的 except 块之后。
分支结构
Python代码是按照顺序单行执行的,执行中会出现分支情况,在Python中使用if、elif和else关键字来创建分支结构,具体如下:
If cond1:
#业务代码块1
elif cond2:
#业务代码块2
elif cond3:
#业务代码块3
else:
#业务代码块4
循环结构
Python循环有2种做法,一种是for-in循环,一种是while循环。
for-in循环:明确循环次数或者对一个容器进行迭代用for-in,具体格式如下:
while循环:不知道循环次数时,我们使用while循环,while是否终止通过bool只判断。具体格式如下:
内置函数
Python 解释器内置了很多函数具体如下:
函数 | 描述 |
abs() | 返回数的绝对值 |
acos(x) | 返回x的反余弦弧度值。 |
all() | 如果可迭代对象中的所有项均为 true,则返回 True。 |
any() | 如果可迭代对象中的任何项为 true,则返回 True。 |
ascii() | 返回对象的可读版本。用转义字符替换 none-ascii 字符。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值。 |
bin() | 返回数的二进制版本。 |
bool() | 返回指定对象的布尔值。 |
bytearray() | 返回字节数组。 |
bytes() | 返回字节对象。 |
callable() | 如果指定的对象是可调用的,则返回 True,否则返回 False。 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cos(x) | 返回x的弧度的余弦值。 |
chr() | 返回指定 Unicode 代码中的字符。 |
choice(seq) | 从序列的元素中随机挑选一个元素。 |
classmethod() | 把方法转换为类方法。 |
compile() | 把指定的源作为对象返回,准备执行。 |
complex() | 返回复数。 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
delattr() | 从指定的对象中删除指定的属性(属性或方法)。 |
dict() | 返回字典(数组)。 |
dir() | 返回指定对象的属性和方法的列表。 |
divmod() | 当参数1除以参数2时,返回商和余数。 |
enumerate() | 获取集合(例如元组)并将其作为枚举对象返回。 |
eval() | 评估并执行表达式。 |
exec() | 执行指定的代码(或对象)。 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
filter() | 使用过滤器函数排除可迭代对象中的项目。 |
float() | 返回浮点数。 |
format() | 格式化指定值。 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
frozenset() | 返回 frozenset 对象。 |
getattr() | 返回指定属性的值(属性或方法)。 |
globals() | 以字典返回当前全局符号表。 |
hasattr() | 如果指定的对象拥有指定的属性(属性/方法),则返回 True。 |
hash() | 返回指定对象的哈希值。 |
help() | 执行内建的帮助系统。 |
hex() | 把数字转换为十六进制值。 |
hypot(x, y) | 返回欧几里德范数 sqrt(x*x + y*y)。 |
id() | 返回对象的 id。 |
input() | 允许用户输入。 |
int() | 返回整数。 |
isinstance() | 如果指定的对象是指定对象的实例,则返回 True。 |
issubclass() | 如果指定的类是指定对象的子类,则返回 True。 |
iter() | 返回迭代器对象。 |
len() | 返回对象的长度。 |
list() | 返回列表。 |
locals() | 返回当前本地符号表的更新字典。 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
map() | 返回指定的迭代器,其中指定的函数应用于每个项目。 |
max() | 返回可迭代对象中的最大项目。 |
memoryview() | 返回内存视图(memory view)对象。 |
min() | 返回可迭代对象中的最小项目。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
next() | 返回可迭代对象中的下一项。 |
object() | 返回新对象。 |
oct() | 把数转换为八进制。 |
open() | 打开文件并返回文件对象。 |
ord() | 转换表示指定字符的 Unicode 的整数。 |
pow() | 返回 x 的 y 次幂的值。 |
print() | 打印标准输出设备。 |
property() | 获取、设置、删除属性。 |
range() | 返回数字序列,从 0 开始且以 1 为增量(默认地)。 |
radians(x) | 将角度转换为弧度 |
repr() | 返回对象的可读版本。 |
reversed() | 返回反转的迭代器。 |
round() | 对数进行舍入。 |
randrange([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1 |
random() | 随机生成下一个实数,它在[0,1)范围内。 |
set() | 返回新的集合对象。 |
sin(x) | 返回的x弧度的正弦值。 |
setattr() | 设置对象的属性(属性/方法)。 |
slice() | 返回 slice 对象。 |
sorted() | 返回排序列表。 |
@staticmethod() | 把方法转换为静态方法。 |
seed([x]) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
shuffle(lst) | 将序列的所有元素随机排序 |
str() | 返回字符串对象。 |
sum() | 对迭代器的项目进行求和。 |
super() | 返回表示父类的对象。 |
sqrt(x) | 返回数字x的平方根。 |
tan(x) | 返回x弧度的正切值。 |
tuple() | 返回元组。 |
type() | 返回对象的类型。 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
vars() | 返回对象的 __dict__ 属性。 |
zip() | 从两个或多个迭代器返回一个迭代器。 |
__import__() | 用于动态加载类和函数。 |
语法是Python学习的基础呀~
这一篇整理的内容还是很全面的,基本涵盖了Python的基础语法知识。
本篇内容写到的语法知识点,在下面的各篇内容都有详细的讲解。
突然感觉学习不是一件拼脑力的事情,而是一件拼体力和意志力的东西。
加油吧~