原址:https://legacy.python.org/dev/peps/pep-0008/
PEP-8
缩进
每级缩进使用4个空格
续行应该与被圆括号、花括号、方括号包裹起来的其他元素对齐,或者使用悬挂缩进
使用悬挂缩进要注意:第一行不能有参数,且应该多一层缩进以便于与续行区分开
右括号回退,右括号应该顶行写
Tab键
空格是首选的缩进方式,制表符只能用于与同样适用制表符缩进的代码保持一致
单行最大长度
每行最大长度是79个字符
文档字符串、注释等最大宽度是72个字符
一般续行可以使用反斜杠,而括号内续行不需要使用反斜杠
空行
顶层函数和类的定义,前后用两个空行隔开
类里的方法定义使用一个空行
模块导入
每个模块应该单独成行
导入总是位于文件顶部,在模块注释和文档字符串之后,在模块的全局变量与常量之前
导入顺序:标准库 ----- 相关的第三方库 ----- 本地库
尽量避免使用通配符*导入
各个import的组需要用空行隔开
组内的模块的导入顺序按照首字母排列
字符串
单引号与双引号作用一样,但必须保证成对出现
建议句子使用双引号,单词使用单引号,但不强制
表达式和语句中的空格
各种括号里面避免空格
逗号、分号和冒号之前避免空格
但是如果冒号作为分隔符,那么前后都要加空格
函数调用的左括号之前不能有空格
赋值等操作符前后不能为了对齐而添加多个空格
函数默认参数使用的赋值符左右省略空格
不要将多句语句写在同一行,哪怕if等语句中只有一句
注释:
块注释:
使用与代码相同级别的缩进
注释的每一行开头使用一个#和一个空格
块注释的内部段落通过只有一个#的空行分隔
行内注释:
与代码语句同行,至少要有两个空格分隔,由#和一个空格开始
谨慎使用
命名规范
包和模块名尽量简短,全部使用小写字母,模块名可以使用下划线连接,包名不可以
类名建议使用驼峰体
全局变量名应尽量只在模块内部使用
函数名应该为全部小写,以下划线连接
常量名应全部使用大写字母,可以使用下划线
异常名,遵从类名的规则,如果是error的话,以Error为后缀
编码建议:
考虑到其他python实现的效率问题,运算符+应该用.join()方法替代
尽可能使用’is’ ’is not’取代’==’
异常类应该继承自Exception 而不是BaseException
异常中不要使用裸露的except,except后跟具体的exceptions
异常中try的代码应该尽量少
使用字符串的方法,而不是string模块
使用startswith()和endswith()两个方法替代切片进行序列前缀或后缀的检查
使用isinstance() 比较对象的类型
空序列类型对象的bool为False,可以直接用于if判断
不要用 ==和is进行bool比较
字符串不要以空格收尾