PEP8规范(部分)

1、 代码布局设计
1.1 缩进
A、 使用四个空格来进行缩进
B、 换行的时候可以使用反斜杠,最好的方法是使用园括号,在使用反斜杠的时候,在反斜杠的后直接回车,不能有任何空格存在

1.2 tab和空格的选择
关于tab的空格的选择,在python2中是可以混用的,但是在python3中,只能用一种风格。

1.3 最大行长度
行的最大长度为79个字符
在书写文档或者是注释的时候,行长度应该控制在72个字符。

1.4 空行
Top level函数和类的定义的时候,空两行。
类中方法的定义空一行。
在函数中谨慎使用空行来表示相关的逻辑段。
无关的函数之间用一个空行进行分割。

1.5 源文件编码
在源文件中一直使用utf-8编码,在python2中使用ascll编码。
文件,在python2 中使用ascll编码,在python3中使用utf-8编码

1.6 导入
Import经常使用单独的行.
Import总是在文件的最上行,在模块的注释和docstring之后,在模块的全局变量之前。
Import可以按照以下顺序进行组织:
A标准类库import
B第三方import
C本地类库import
在每个组导入之后,可以用空行进行分割
把所有all相关类型的声明放在import之后.
推荐使用绝对导入,可读性强.

2、 字符串引号
在对于字符串的标示中,使用双引号还是单引号是没有区别的,主要就是两者混合使用从而避免反斜杠的出现。

3、 在表达式和语句中使用空格

3.1 避免使用空格情况
A. 在小括号,中括号,大括号中避免使用空格
B. 在逗号,分号,冒号之前不需要空格
C. 在切片的时候,避免使用空格,在扩展的切片中,必须使用相同的空格个数
D.函数的左括号前不要添加空格
E. 中括号前不要添加空格
F. 操作符左右各一个空格,不要为了追求一致从而添加空格个数

3.2 其他建议
A. 避免在任何结尾添加空白。
B. 在下列操作符中左右各留空白
assignment ( = ), augmented assignment ( += , -= etc.), comparisons ( == , < , > , != , <> , <= , >= , in , not in , is , is not ), Booleans ( and , or , not )
C. 如果操作符优先级不同,注意在操作符左右留空白,特别是高优先级和低优先级的
D. 在使用函数的时候,赋值和默认值之间不需要空格
E. 不要将多语句写在同一行

4、 注释

在修改的代码的时候,务必修改注释。
注释必须是英文,最好是完整的句子,首字母大写

4.1 块注释
在一段代码前增加注释,在#后添加一个空格,段落之间只有一个#作为行间隔

4.2 行注释
在使用行注释的时候,在代码句子结束之后至少两个空格,然后用#开头后跟一个空格

4.3 文档注释
在所有的公共模块,函数,类,方法中加入文档注释,这些注释写在def之后。
在进行多行注释的时候,注意“”“结束的时候,必须独占一行。
当文档注释是一行的时候,确保开始的““”和“”“在同一行中。

5、 命名规范

使用单独的小写字母(b)
使用单独的大写字母(B)
使用小写字母(lowercase)
使用小写字母和下划线(lower_case_with_underscores)
使用大写字母(UPPERCASE)
使用大写字母和下划线(UPPER_CASE_WITH_UPPERCASE)
驼峰式写法(CamelCase):在使用缩写的时候,大写优于小写例如HTTPServer优于HttpServer
首字母大写,然后使用下划线是一种丑陋的写法。

5.1 避免使用的名称
在写变量的时候,尽量避免小写的l和大写字母O和大写字母I,主要原因是容易和数字中1,0相混淆

5.2 包和模块名称
模块尽量使用简短的全部小写的名称,如果可以增加可读性那么可以使用下划线,python的包不推荐使用下划线,但是在引用其他语言写的扩展包中可以使用下划线来表示区分

5.3 类名称
类名称主要遵循为CapWords约定,表示为首字母大写

5.4 异常名称
异常归于类,从而也要遵循类名的规范,主要是在后缀上必须添加“Error“

5.4 全局变量名
全局变量只在模块类有效,和function命名相同

5.5 方法名称
方法名称全部为小写,下划线是可选的(在增加可读性的基础上使用)

5.6 方法变量
类的方法第一个参数总是self
类方法的静态变量总是为crs
如果一个方法的参数和保留字相冲突,那么在后面添加下划线进行区分

5.7 常量
常量命名全部使用大写,可以使用下划线进行分割

6、 编码建议
单独比较的时候使用is或者is not,不要使用==进行比较。
当实现比较的方法的时候,最好全部实现
eq , ne ,lt , le , gt , ge ),而不要单独实现一个。
使用startswith() and endswith()代替切片进行序列前缀或后缀的检查。比如
Yes: if foo.startswith(‘bar’):优于
No: if foo[:3] == ‘bar’:

7 使用isinstance()比较对象的类型。比如
Yes: if isinstance(obj, int): 优于
No: if type(obj) is type(1):

重点
1.缩进: 4个空格,配合冒号使用,使用缩进表示作用域

2.注释:# ,字符串”“” “”” 、”’ ”’ 只有三引号支持多行注释

3.常规变量命名、函数名、模块名:多个单词之间以下划线隔开
例:li_xiao_long = ‘abc’

4.类 命名,使用大驼峰命名法

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页