《Python Enhancement Proposal #8》(8号Python增强提案)又叫PEP8,是针对Python代码格式而编订的风格指南。列出了很多细节,以描述如何撰写清晰的Python代码。下面列出几条绝对应该遵守的规则。

  • 空白:
    使用space(空格)来表示缩进,而不要用tab(制表符)
    和语法相关的每一层缩进都用4个空格来表示
    每行的字符数不应超过79
    对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别上再加4个空格
    文件中的函数与类之间应该用两个空行隔开
    在同一个类中,各方法之间应该用一个空行隔开
    在使用下标来获取列表元素、调用函数或给关键字参数赋值的时候,不要在两旁添加空格
    为变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格,而且只写一个就好

  • 命名:
    函数、变量及属性应该用小写字母来拼写,各单词之间以下划线相连,例如:lowercase_underscore
    受保护的实例属性,应该以单个下划线开头,例如。_leading_underscore
    私有的实例属性,应该以两个下划线开头,例如,__double_leading_underscore
    类与异常,应该以每个单词首字母均大写的形式来命名,例如,CapitalizeWord
    模块级别的常量,应该全部采用大写字母来拼写,各单词之间以下划线相连,例如,ALL_CAPS
    类中的实例方法(instance method),应该把首个参数命名为self,以表示该对象自身
    类方法(class method)的首个参数,应该命名为cls,以表示该类自身

  • 表达式和语句:
    采用内联形式的否定词,而不要把否定词放在整个表达式的前面,例如,应该写if a is not b而不是if not a is b
    不要通过检测长度的方法(如if len(somelist) == 0)来判断somelist是否为[]或’’等空值,而是应该采用if not somelist这种写法来判断,它会假定:空值将自动评估为False
    检测somelist是否为[1]或’hi’等非空值时,也应如此,if somelist语句默认会把非空的值判断为True
    不要编写单行的if语句、for循环、while循环及except复合语句,而是应该把这些语句分成多行来书写,以示清晰
    import语句应该总是放在文件开头
    引入模块的时候,总是应该使用绝对名称,而不应该根据当前模块的路径来使用相对名称。例如,引入bar包的foo模块时,应该完整的写出from bar import foo,而不应该简写为import foo
    如果一定要以相对名称来编写import语句,那就采用明确的写法:from . import foo
    文件中的那些import语句应该按顺序划分成三个部分,分别表示标准库模块、第三方模块以及自用模块。在每一部分之中,各import语句应该按模块的字母顺序来排列。


摘自《编写高质量Python代码的59个有效方法》--第2条:遵循PEP8风格指南