Python 什么是PEP 8
PEP 8是Python增强提案8。PEP 8是一份为Python代码提供编码规范的文档。
下面是编写干净代码和正确缩进的指南。
缩进
指南建议每级缩进使用4个空格。
制表符还是空格
制表符应该只用于保持与已经用制表符缩进的代码的一致性。
Python禁止混合使用制表符和空格进行缩进。
行的最大长度
将所有行限制在最大79个字符长度。
导入
导入语句,就像Python中的任何其他语句或关键字一样,应该按照最佳实践适当使用和添加到代码中。让我们逐个看一下。
多个导入
多个导入通常应该放在单独的行上。例如 –
import numpy
import pandas
import matplotlib
始终置顶
导入语句始终放在文件的顶部,即:
- 在任何模块注释和文档字符串之后
- 在模块全局变量和常量之前
例如:
# import the numpy module
import numpy
按顺序导入模块
良好的实践是按照以下顺序导入模块
- 标准库模块 – 例如 sys、os、getopt、re
- 第三方库模块 – 例如 ZODB、PIL.Image 等
- 本地开发的模块
绝对导入
建议使用绝对导入,它们通常更易读,并且在导入系统配置错误时能够更好地执行。例如 –
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example
通配符导入(from import *
)应该避免使用
避免使用通配符导入,因为它们会使命名空间中存在哪些名称变得不清楚,从而让读者和许多自动化工具感到困惑。
表达式和语句中的空白
在以下情况下应避免不必要的空白 −
在逗号后的空白处
# Correct:
a = (0,)
# Wrong:
b = (0, )
立即在逗号、分号或冒号之前
# Correct:
if a == 5: print(a, b); a, b = b, a
# Wrong:
if a == 5 : print(a , b) ; a , b = b , a
在函数调用的参数列表开始的左括号之前立即
# Correct:
demo()
# Wrong:
demo ()
在开始索引或切片的开括号之前立即
# Correct:
dct['key'] = lst[index]
# Wrong:
dct ['key'] = lst [index]
注释
- 注释应该是完整的句子。
-
除非是以小写字母开头的标识符,否则应该将第一个单词大写。
-
块注释通常由一个或多个段落组成,每个句子以句号结尾。
-
在多句注释中,句子结束后的句号后应该使用两个空格,最后一个句子除外。
命名规范
以下是目前推荐的命名标准。首先看一下常见的命名风格。
- b(小写字母)
- B(大写字母)
- 小写字母
- 使用下划线的小写字母
- 大写字母
- 使用下划线的大写字母
避免使用这些名称
永远不要使用‘l’(小写字母el)、‘O’(大写字母oh)或‘I’(大写字母eye)作为单个字符的变量名。
包和模块名称
模块应该有简短的全小写名称。如果使用下划线可以提高可读性,可以在模块名称中使用下划线。Python包也应该有简短的全小写名称,虽然不鼓励使用下划线。
类的名称
类名通常采用CapWords约定。在文档和主要作为可调用对象使用的接口方面,也可能使用函数的命名约定。
异常名称
这里应用类的命名约定。然而,你应该在异常名称上使用后缀“Error”。
函数和变量名称
- 函数名应该是小写的,必要时可以使用下划线来分隔单词以提高可读性。
-
变量名遵循与函数名相同的约定。
函数和方法参数
-
实例方法的第一个参数应该始终使用self。
-
类方法的第一个参数应该始终使用cls。
方法名称和实例变量
-
使用函数命名规则:小写,必要时使用下划线分隔单词以提高可读性。
-
仅对非公共方法和实例变量使用一个前导下划线。
-
为了避免与子类产生名称冲突,使用两个前导下划线来调用Python的名称修饰规则。
常量
常量通常在模块级别定义,使用全大写字母,单词之间使用下划线分隔。