Python增强建议#8,也称为PEP 8,是关于如何格式化Python代码的样式指南。你可以使用任何你想要的方式编写Python代码,只要它有有效的语法。但是,使用一致的格式化代码更易于阅读。在更大的社区中,与其他Python程序员共享一种共同的风格可以促进协作项目。但是,即使您是惟一阅读您的代码的人,遵循样式指南也会使您以后更改代码变得更容易,并可以帮助您避免许多常见错误。
PEP 8提供了关于如何编写清晰的Python代码的大量细节。随着Python语言的发展,它将继续得到更新。值得在线阅读整个指南(https://www.python.org/dev/pep/pep-0008/)。这里有一些规则,你一定要遵守。
Whitespace(空格)
在Python中,空格在语法上很重要。Python程序员对空格对代码清晰度的影响特别敏感。遵循以下与空格相关的指导原则:
- 使用空格而不是制表符进行缩进。
- 为每一级的重要语法缩进使用四个空格。
- 行长度不超过79个字符。
- 将长表达式延续到其他行上时,应在其正常缩进级别上使用四个额外的空格进行缩进。
- 在一个文件中,函数和类之间应该用两行空白隔开。
- 在类中,方法之间应该用一行空白隔开
- 在字典中,每个键和冒号之间不加空格,如果在同一行中,则在对应的值前加一个空格。
- 在一个变量赋值中,在=操作符之前和之后都加上一个空格。
- 对于类型注释,确保变量名和冒号之间没有分离,并在类型信息前使用空格。
Naming(命名)
PEP 8为语言中的不同部分提供了独特的命名风格。这些约定使得在读取代码时很容易区分与每个名称对应的类型。遵循以下有关命名的指导方针:
- 函数、变量和属性应该采用小写的
lowercase_underscore
格式 - 受保护的实例属性应该采用
_leading_underscore
格式 - 私有实例属性应该采用双重下划线格式
__double_leading_underscore
- 类(包括例外)应该是大写的。
CapitalizedWord
- 模块级常量应该采用
ALL_CAPS
格式MYSQL_NAME
- 类中的实例方法应该使用self(引用对象)作为第一个参数的名称。
- 类方法应该使用引用类的cls作为第一个参数的名称。
Expressions and Statements(表达式和语句)
The Zen of Python states: “There should be one—and preferably only
one—obvious way to do it.”
PEP 8试图将这种风格编入它的表达式和语句指南:
- 用内联否定(
if a is not b
)来代替肯定表达式的否定(if not a is b
) - 不要通过将长度与0进行比较来检查空容器或序列(比如[]或")(
if len(somelist) == 0
)。使用if not somelist
并假设空值将隐式地计算为False
。 - 对于非空容器或序列(如[1]或'hi')也是如此。对于非空值,
if somelist
语句隐式地为True
。 - 避免单行 if语句、for和while循环以及except复合语句。为了清晰起见,将它们分散在多个行上。
- 如果你不能把一个表达式写在一行上,用圆括号和缩进把它包围起来,这样更容易阅读
- 宁可使用圆括号括住多行表达式,也不要使用
\
行延续字符
Imports (导入)
PEP8 给出了如何导入模块和如何在代码中使用的一些指南:
- 始终将import语句(
from x import y
)放在文件的顶部。 - 在导入模块时,总是使用
绝对名称
,而不是相对于当前模块自己的路径的名称。例如,要从bar包中导入foo模块,应该使用from bar import foo
,而不仅仅是import foo
。 - 如果必须执行相对导入,请使用显式语法
from . import foo
- 导入部分应该按照以下顺序:
标准库模块
、第三方模块
、您自己的模块
。每个小节都应该有按字母顺序排列的导入。
NOTE:可以使用Pylint 进行静态的语法检查
值得注意的
- 在编写Python代码时,请始终遵循Python增强建议#8 (PEP 8)样式指南
- 与更大的Python社区共享相同风格的代码有助于与其他社区的协作
- 使用一致的样式使您以后更容易修改自己的代码