Python 拥有简洁优雅的语法,但这并不意味着开发者必定能写出简洁而优雅的代码。要写出好的代码,就要遵循必定的规则。Python 官方给出了 PEP8 风格指南,建议每位 Python 开发者都应该阅读一遍,并在开发过程当中遵循该编程规范。python
PEP 8 全称为 Python Enhancement Proposal #8 , 中文叫作《8号Python加强提案》。PEP 8 中列出了不少编程的细节,认真实践有助于养成良好的编程习惯。程序员
PEP 8 官方文档:PEP 8 -- Style Guide for Python Code编程
PEP 8 概要
下面列出 PEP 8 中提到的,而且每位 Python 开发者都应该遵循的基本要求,段落摘自 Effective Python 中文译本。api
空白bash
Python 中的空白(whitespace)会影响代码的含义。 Python 程序员使用空白的时候尤为在乎,由于它们还会影响代码的清晰程度。ide
- 使用 space(空格)来表示缩进,而不要用 tab(制表符)。
- 和语法相关的每一层缩进都用 4 个空格来表示。
- 每行的字符数不该超过 79。
- 对于占据多行的长表达式来讲,除了首行以外的其他各行都应该在一般的缩进级别之上再加 4 个空格。
- 文件中的函数与类之间应该用两个空行隔开。
- 在同一个类中,各方法之间应该用一个空行隔开。
- 在使用下标来获取列表元素、调用函数或给关键字参数赋值的时候,不要在两旁添加空格。
- 为变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格,并且只写一个就好。
命名函数
PEP 8 提倡采用不一样的命名风格来编写 Python 代码中的各个部分,以便在阅读代码时能够根据这些名称看出它们在 Python 语言中的角色。工具
- 函数、变量及属性应该用小写字母来拼写,各单词之间如下划线相连,例如,lowercase_underscore。
- 受保护的实例属性,应该以单个下划线开头,例如, _leading_underscore。
- 私有的实例属性,应该以两个下划线开头,例如, __double_leading_underscore。
- 类与异常,应该以每一个单词首字母均大写的形式来命名,例如, CapitalizedWord。
- 模块级别的常量,应该所有采用大写字母来拼写,各单词之间如下划线相连,例如, ALL_CAPS。
- 类中的实例方法(instance method),应该把首个参数命名为 self,以表示该对象自身。
- 类方法(class method)的首个参数,应该命名为 cls,以表示该类自身。
表达式和语句ui
《The Zen of Python》(Python 之禅)中说:“每件事都应该有直白的作法,并且最好只有一种。” PEP 8 在制定表达式和语句的风格时,就试着体现了这种思想。spa
- 采用内联形式的否认词,而不要把否认词放在整个表达式的前面,例如,应该写 if a is not b 而不是 if not a is b。
- 不要经过检测长度的办法(如 if len(somelist) == 0)来判断 somelist 是否为 [] 或 '' 等空值,而是应该采用 if not somelist 这种写法来判断,它会假定:空值将自动评估为 False。
- 检测 somelist 是否为 [1] 或 'hi' 等非空值时,也应如此, if somelist 语句默认会把非空的值判断为 True。
- 不要编写单行的 if 语句、 for 循环、 while 循环及 except 复合语句,而是应该把这些语句分红多行来书写,以示清晰。
- import 语句应该老是放在文件开头。
- 引入模块的时候,老是应该使用绝对名称,而不该该根据当前模块的路径来使用相对名称。例如,引入 bar 包中的 foo 模块时,应该完整地写出 from bar import foo,而不该该简写为 import foo。
- 若是必定要以相对名称来编写 import 语句,那就采用明确的写法: from.import foo。
- 文件中的那些 import 语句应该按顺序划分红三个部分,分别表示标准库模块、第三方模块以及自用模块。在每一部分之中,各 import 语句应该按模块的字母顺序来排列。
PEP 8 检测工具
咱们可使用 Johann C. Rocholl 开发的 pep8 程序,来自动检测代码是否符合 PEP8 规范。
经过 pip 来快速安装该程序:
$ pip install pep8复制代码
使用格式
$ pep8 [options] input...复制代码
主要参数解释:
--first
只显示每一类错误中的第一个错误
--exclude=patterns
指定要排除的文件或文件夹模式,以逗号分隔
--filename=patterns
指定待检测的文件名模式,默认以逗号分隔
--select=errors
指定要检测的错误类型
--ignore=errors
指定要忽略的错误类型
--show-source
显示每个错误的源代码
--show-pep8
显示每一个错误的具体 PEP8 规范(将自动设定 --first
)
--statistics
对错误和警告进行计数
--count
将错误和警告的总数打印到标准输出,若是不为零,那么退出代码将会被设为1
--max-line-length
设定每行的最大长度,默认为79
--format=format
设定错误的格式
更详细的使用介绍,请参考此文档:pep8 documentation
原文连接: www.codebelief.com/article/201…