行结构与缩进
代码要保持相同的缩进,如果缩进格式不同会报IndentationError,也就是缩进错误
所以如果看到这个错误,说明你的代码缩进有问题。
续行符 ‘\’
当一行代码太长时,可以考虑使用\放在结尾,来增加程序的可读性。
空的函数体或者代码块,pass
如果一个函数体或者代码块什么都没有,可以写上pass。有点类似于C语言中的continue,程序会继续执行。
空格还是tab
根据PEP8 python编码规范,鼓励开发人员使用宫格,而非tab。
因为系统遇到tab(制表符)时会移动到下一个以8为倍数的地方,其中用空格来填充。
也就是说,如果你的代码中第5列使用了tab,那么缩进后就在第13列,中间都是空格,这样容易引发格式错误。
综上所述,使用空格。
代码在写一行
如果你的代码很短,也可以选择写在一行。比如这样:
但是pycharm会根据PEP8规范进行提示,图中分好下面有个波浪线,说明这不符合PEP8编码规范。
把鼠标移到这个波浪线上会出现提示
一行最好就做一件事。
注释
使用‘#’作为注释,#后面的内容代码都会过滤掉
还有一种是文档注释,一般写在函数内部,用三个单引号或者双引号
红框中的就是文档注释,一般填写函数的功能,以及参数代表的含义。
Python的作者很细心,提供一个内建属性doc来查看函数的文档注释。
通过函数名.doc就能查看函数的文档注释。
标识符
标识符
标识符是识别变量,函数,类,模块和其他对象的名称。
有一点要必须知道,标识符是区分大小写的,Foo和foo是两个不同的函数。
而且$%@这样的符号也不能出现在标识符中。
还有,保留字也不能作为标识符,比如for,in,if,else,def,return等等
所有保留字如下图:
不用都知道,目前知道常用就即可,以后用到了再说。
特殊标识符
以开头(一个)的标识符,(比如foo)不能通过import导入
以开头(两个)的标识符,比如(age)代表类的私有成员变量
前后双的标识符,是为了特殊方法保留的。不能乱用。
数字字面量
Python内置的数字字面量有4种类型:
- 布尔
- 整数
- 浮点数
- 复数
布尔:True,False,表示的值分别是1,0。
整数:像1234这样的数被解释为整数,想让这个整数表示二进制、八进制、十六进制的话,分别在值得前面加上0,0x,0b。
浮点数:像123.45,1.23e这样的数
复数:整数或者浮点数后面加个j就是虚数了,实数加虚数就是复数了。
字符串字面量
用单引号,双引号,或者三引号定义,而且定义时开始和结尾的引号必须是同一种引号。
比如你用双引号开始的,也必须以双引号结束,否则会报snatexError(语法错误)错误。
还有转义的字符得知道
在Python3中,所有的字符串都是unicode编码。不用在字符串前面加u了,加了会报错。
原始字符串
在字符串前面加个r,字符串中的内容不会进行转义,比如'\n'就不会换行了。
一般用在指定文件的路径,比如r"C:\user\xxx"
也会用在正则表达式中。
容器
列表,元组,字典
就说两点,容器内不能使用续行符\,最后一个元素后面可以加,
运算符
:幂运算,AB,表示A的B次方
//:整除,8//3,结果是2.多,但是结果只保留整数部分。
%:取余,8%4,计算结果是2余0,返回余数0
<<:左进位,4<<2,这个要换算成2进制计算,4的二进制是0000 0100,向左移两位,结果是0001 0000,转回10进制就是16.
:右进位,同理。
下面是几个位运算符:
&:按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
比如2&3,0010&0011,结果0010,2
|:按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
比如2|3,0010|0011,结果是0011,3
^:按位异或运算符:当两对应的二进位相异时,结果为1。
比如23,00100011,结果是0001,1
~:按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1
比如7,0111,结果是1000,8。如果是一个有符号的二进制数,第一位代表符号位,也要跟着取反。
还有逻辑运算符:
and:布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
or:布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
not:布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
成员运算符:
in,not in
身份运算符:
is:is 是判断两个标识符是不是引用自一个对象
is not:is not 是判断两个标识符是不是引用自不同对象
注意:is 和 ==的区别,is用于判断是否引用了同一个对象,==用于判断左右两边的值是否相等。
运算符的优先级:
这些了解常用就行。可以用()控制优先级。
装饰器
使用装饰器的目的是修改方法或者类的行为,装饰使用特殊符号@,必须放在单独的行上。
可以使用多个装饰器,但是每个装饰器必须位于不同的行。
源代码编码
编写python代码时,一般使用标准的7位ASCII码。
如果想使用其他类别的编码,可以在程序开头的第一行或者第二行加入如下内容:
使用二进制编码:
s2 = b"abcde"
检查一个对象使用了什么编码方式?
要借助一个内建包,import chardet
要注意一点的是,chardet.detect()函数只接受字节数组,所以检测之前要先转化成字节数组
可以利用bytes()函数转化为字节数组,传入两个参数即可,第一个参数是字符串,第二个是编码格式。
比如:s4 = bytes(s3, encoding="utf-8")
到此为止,《Python参考手册》第二章看完了,历时90分钟。