什么是pep 8?
PEP 8指的是Python Enhancement Proposal 8。PEP 8是一份文件,提供了Python代码的编码规范。
下面是编写具有适当缩进的干净代码的指南。
更多Python相关文章,请阅读:Python 教程
缩进
该指南建议每个缩进级别使用4个空格。
Tab还是空格
制表符应仅用于与已用制表符缩进的代码保持一致。
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]
# 错误的:
dct ['key'] = lst [index]
评论
- 评论应该是完整的句子。
-
第一个单词应该大写,除非它是以小写字母开头的标识符。
-
块注释通常由一个或多个段落组成,每个句子以句号结束。
-
在多句评论中,句子结束后应使用两个空格,除了最后一个句子。
命名约定
以下是目前推荐的命名标准。让我们首先看看常见的命名样式
- b(单个小写字母)
- B(单个大写字母)
- 小写
- 带下划线的小写
- 大写字母
- 带下划线的大写字母
避免使用这些名称
永远不要使用’1’(小写字母el),’O’(大写字母哦)或’I’(大写字母眼)作为单个字符变量名称。
包和模块名称
模块应具有短小的全小写名称。如果使用下划线可以提高可读性,则可以在模块名称中使用下划线。Python包也应该具有短小的全小写名称,尽管不鼓励使用下划线。
类名
类名通常使用CapWords约定。在文档和API以“可调用”为主要方式使用的情况下,可以使用函数名称约定。
异常名称
此处适用类命名约定。但是,应在异常名称上使用后缀“Error”。
函数和变量名称
- 函数名称应为小写,必要时使用下划线分隔单词以提高可读性。
-
变量名称遵循与函数名称相同的约定
函数和方法参数
-
对于实例方法的第一个参数始终使用self
-
对于类方法的第一个参数始终使用cls。
方法名称和实例变量
-
使用函数命名规则:小写字母,必要时使用下划线分隔单词以提高可读性。
-
仅针对非公共方法和实例变量使用一个前导下划线。
-
为避免与子类名称冲突,请使用两个前导下划线来调用Python的名称缩写规则。
常量
常量通常在模块级别上定义,并使用下划线分隔单词的所有大写字母编写。