1. 代码编排
- 缩进。四个空格,不要使用tab。
- 每行最大长度79,换行使用圆括号。
- 空行。top-level函数之间空两行;类和函数定义之间空两行;类中的方法定义之间空一行;逻辑无关的段落空一行;其他地方尽量不要再空行。
2. import
- import按标准、三方和自己编写顺序依次排放,之间空一行。
- 不要一句import多个库。
3. 空格
- 尽量避免不必要的空格
- 各种右括号前不加空格。
- 各种左括号后不加空格。
- 逗号、冒号、分号前不加空格。
- 操作符左右各加一个空格,不要为了对齐增加空格。
- 函数默认参数使用的赋值符左右省略空格。
- 不要将多句语句写在同一行。
- if/for/while语句中,即使执行语句只有一句,也必须另起一行。
4. 注释
- 错误的注释不如没有注释。代码发生改变后要立马修改对应注释。
- 注释必须采用英文,最好是完整的句子,行首字母大写。
#
后需要加空格。- 尽量让代码、命名自解释。优秀代码 > 烂代码 + 好注释。
- 避免无谓注释。
5. 命名规范
- 模块命名尽量短小,使用全部小写的方式,可以使用下划线。
- 包命名尽量短小,使用全部小写的方式,不可以使用下划线。
- 类的命名使用CapWords的方式,模块内部使用的类采用_CapWords的方式。
- 异常命名使用CapWords+Error后缀的方式。
- 全局变量尽量只在模块内有效,类似C语言中的static。实现方法有两种,一是__all__机制;二是前缀一个下划线。
- 函数命名使用全部小写的方式,可以使用下划线。
- 常量命名使用全部大写的方式,可以使用下划线。
- 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。
- 类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式。
- 类的方法第一个参数必须是self。
- 点我看《编写可读代码的艺术》。
Python之父Guido推荐的规范:
6. 编码建议
- 尽可能使用‘is’ ‘is not’取代‘==’,比如if x is not None 要优于if x。
- 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。
- 异常中不要使用裸露的except,except后跟具体的exceptions。
- 异常中try的代码尽可能少
- 使用startswith() and endswith()代替切片进行序列前缀或后缀的检查
- 使用isinstance()比较对象的类型。
- 判断序列空或不空,直接 if seq,不要用 if len(seq)这种方式。
- 字符串不要以空格收尾。
- 如果一个类不继承自其它类, 就显式的从object继承. 如
class SampleClass(object)...