第2条:遵循PEP 8 建议
Item 2: Follow the PEP 8 Style Guide
PEP 8,全称Python Enhancement Proposal #8(Python增强建议),是标准化Python代码风格的指南。
从程序运行的角度,你可以用任何风格写Python,只要没有语法错误。但是使用一致的代码风格,可以使代码可读性更高。使用规范的代码风格会方便他人阅读你的代码,也能帮助你在之后修改代码,以及避免许多常见错误。PEP 8 提供了如何写干净的Python代码的丰富细节。随着Python发展它也在不断更新。可以在网上阅读:PEP 8 – Style Guide for Python Code | peps.python.org
小提示:很多开发环境提供了提供了PEP 8格式化工具。PyCharm中reformate快捷键ctrl alt enter
。Pylint 工具是一个流行的静态Python代码分析工具。
下面是PEP8中常用的一些建议:
空格 White Space
Python中空格是一种语法,通过空格表示代码层级(for、if和def等)。下面是和空格有关的建议:
- • 使用空格而不是table进行缩进(indentation)。
- • 4空格缩进表示不同代码级别。
- • 每行不超过79个字符。
- • 长表达式延续到另一行时应该有4空格的额外缩进。
- • 函数和类之间应该用2空行隔开。
- • 类中方法应该用1空行隔开。
- • 字典中,key和冒号之间不要空格,在value前放1个空格。
{key: value}
- • 赋值时,=运算符前后1个空格。
a = 42
- • 对于类型注解(type annotations),变量名和冒号间没有空格,类型信息前1个空格。
count: int = 10
命名 Naming
PEP 8给出一系列命名建议,有助于根据名字区分类型。
- • 函数,变量和属性:
lowercase_underscore
- • 保护(Protected)实例属性:
_leading_underscore
- • 私有(Private)实例属性:
__double_leading_underscore
- • 类(Classes):
CapitalizedWord
- • 模块级别常量(Module-level constants):
ALL_CAPS
- • 实例方法: 第一个参数命名为
self
,表示实例本身 - • 类方法: 第一个参数为
cls
,表示类本身
表达式和语句 Expressions and Statements
Python之禅写到:“应该有一种,且最好是唯一的方法去实现” PEP 8尝试在表达式和语句中遵循该风格。
- • 使用内部否定(
if a is not b
)而不是外否定(if not a is b
) - • 不要使用长度==0(
if len(somelist) == 0
)的方式判断容器或序列为空,而是使用if not somelist
,并且假定空值隐式地为False
。类似地,判断容器或序列非空应该用if somelist
,对非空值隐式地为True
。 - • 避免把
if
,for
,while
和except
语句都挤在一行,将他们分成多行会更清楚。 - • 如果表达式不能放进一行,用圆括号包围它,加换行并且缩进使其易读。
- • 尽量使用带括号的多行表达式而不是用
连续字符。
Imports
- • 在文件最上方进行import
- • 用全称引入模块。例如,引入bar包中的foo模块,应该使用
from bar import foo
,而不是import foo
- • 如果一定要相对引入(relative imports),使用显式的语法
from . import foo
- • 分部分引入,标准库、第三方、自己的模块。每部分按字母顺序。
Things to Remember
- • 遵循PEP 8
- • 风格统一有利于交流
- • 风格统一有利于自己修改代码