PEP8 即 《8号 Python 增强提案》,是针对 Python 代码风格的指南。采用统一的风格来完成 Python 代码的编写,可以使代码更加易读、易懂,提高代码的可维护性。本文将从代码空白、命名、表达式和语句3个方面,总结提炼一些容易忽略的 PEP8 强烈建议大家绝对应该遵守的规范。
代码空白
- 使用 sapce 空格来表示缩进,不要使用 tab 制表符;
- 每行的字符数不应超过 79;
- 对于占据多行的长表达式,除了首行之外的其余各行都应该在通常的缩进级别之上再加 4 个空格;
- 模块中的函数和类应该使用两个空行隔开;
- 在同一个类中,各方法之间应该使用一个空行隔开;
- 为变量赋值的时候,赋值符号的左侧和右侧都应该添加一个空格;
- 以下情况请不要在两旁添加空格:用下表来获取列表元素、调用函数、给关键字参数赋值。
命名
- 受保护的实例属性,请以单下划线开头,如:
def _method_a; - 私有的实例属性,请以双下划线开头,如:
def __method_b; - 类与异常,命名应遵循每个单词的首字母均大写的形式,如:
SyncObjectError、StudentSubject; - 模块级别的常量,请使用大写字母来拼接,单词间的拼接符号使用单下划线,如:
MAX_NUM。
表达式和语句
- 使用内联形式的否定词,请勿把否定词放在整个表达式前面,如:
if a si not b要比if not a is b更加直白; - 请勿使用检测长度的办法来判断 list 是否为
[]或 str 是否为''等等,如:if len(somelist) == 0是不推荐的,应该采用if not somelist,空值将自动评估为False; - 引入模块时,应该总是使用绝对名称,而不应该根据当前模块的路径来使用相对名称,如:
from bar import foo不推荐直接写为import foo,如果一定要相对导入,那么请使用明确的写法:from . import foo; - 模块开头的 import 语句应该按顺序分为3个部分:标准库模块、第三方模块以及自用模块,在各个部分中, import 语句应该按照字母顺序来排列。
Pylint 是一款流行的 Python 源码静态分析工具。可以检查受测代码是否符合 PEP8 风格指南,此外,还可以找出 Python 程序里的多种常见错误。