python pep8是什么

Python028

python pep8是什么,第1张

PEP是Python Enhancement Proposal的缩写,通常翻译为“Python增强提案”。每个PEP都是一份为Python社区提供的指导Python往更好的方向发展的技术文档,其中的第8号增强提案(PEP 8)是针对Python语言编订的代码风格指南。尽管我们可以在保证语法没有问题的前提下随意书写Python代码,但是在实际开发中,采用一致的风格书写出可读性强的代码是每个专业的程序员应该做到的事情,也是每个公司的编程规范中会提出的要求,这些在多人协作开发一个项目(团队开发)的时候显得尤为重要。我们可以从Python官方网站的PEP 8链接中找到该文档,下面我们对该文档的关键部分做一个简单的总结。

相关推荐:《Python入门教程》

空格的使用

1、使用空格来表示缩进而不要用制表符(Tab)。这一点对习惯了其他编程语言的人来说简直觉得不可理喻,因为绝大多数的程序员都会用Tab来表示缩进,但是要知道Python并没有像C/C++或Java那样的用花括号来构造一个代码块的语法,在Python中分支和循环结构都使用缩进来表示哪些代码属于同一个级别,鉴于此Python代码对缩进以及缩进宽度的依赖比其他很多语言都强得多。在不同的编辑器中,Tab的宽度可能是2、4或8个字符,甚至是其他更离谱的值,用Tab来表示缩进对Python代码来说可能是一场灾难。

2、和语法相关的每一层缩进都用4个空格来表示。

3、每行的字符数不要超过79个字符,如果表达式因太长而占据了多行,除了首行之外的其余各行都应该在正常的缩进宽度上再加上4个空格。

4、函数和类的定义,代码前后都要用两个空行进行分隔。

5、在同一个类中,各个方法之间应该用一个空行进行分隔。

6、二元运算符的左右两侧应该保留一个空格,而且只要一个空格就好。

标识符命名

PEP 8倡导用不同的命名风格来命名Python中不同的标识符,以便在阅读代码时能够通过标识符的名称来确定该标识符在Python中扮演了怎样的角色(在这一点上,Python自己的内置模块以及某些第三方模块都做得并不是很好)。

1、变量、函数和属性应该使用小写字母来拼写,如果有多个单词就使用下划线进行连接。

2、类中受保护的实例属性,应该以一个下划线开头。

3、类中私有的实例属性,应该以两个下划线开头。

4、类和异常的命名,应该每个单词首字母大写。

5、模块级别的常量,应该采用全大写字母,如果有多个单词就用下划线进行连接。

6、类的实例方法,应该把第一个参数命名为self以表示对象自身。

7、类的类方法,应该把第一个参数命名为cls以表示该类自身。

表达式和语句

在Python之禅(可以使用import this查看)中有这么一句名言:“There should be one-- and preferably only one --obvious way to do it.”,翻译成中文是“做一件事应该有而且最好只有一种确切的做法”,这句话传达的思想在PEP 8中也是无处不在的。

1、采用内联形式的否定词,而不要把否定词放在整个表达式的前面。例如if a is not b就比if not a is b更容易让人理解。

2、不要用检查长度的方式来判断字符串、列表等是否为None或者没有元素,应该用if not x这样的写法来检查它。

3、就算if分支、for循环、except异常捕获等中只有一行代码,也不要将代码和if、for、except等写在一起,分开写才会让代码更清晰。

4、import语句总是放在文件开头的地方。

5、引入模块的时候,from math import sqrt比import math更好。

6、如果有多个import语句,应该将其分为三部分,从上到下分别是Python标准模块、第三方模块和自定义模块,每个部分内部应该按照模块名称的字母表顺序来排列。

编码格式声明

通常,编码格式声明是必需的。如果 python 源码文件没有声明编码格式,python 解释器会默认使用 ASCII 编码,一旦源码文件包含非ASCII编码的字符,python 解释器就会报错。以 UTF-8 为例,以下两种编码格式声明都是合乎规则的。

缩进

统一使用 4 个空格进行缩进。绝对不要用tab, 也不要tab和空格混用。对于行连接的情况,我一般使用4空格的悬挂式缩进。例如:

引号

自然语言使用双引号

机器标识使用单引号

正则表达式使用双引号

空行

编码格式声明、模块导入、常量和全局变量声明、顶级定义和执行代码之间空两行

顶级定义之间空两行,方法定义之间空一行

在函数或方法内部,可以在必要的地方空一行以增强节奏感,但应避免连续空行

导入模块

导入总应该放在文件顶部,位于模块注释和文档字符串之后,模块全局变量和常量之前。导入应该按照从最通用到最不通用的顺序分组,分组之间空一行

标准库导入

第三方库导入

应用程序指定导入

命名规范

模块尽量使用小写命名,首字母保持小写,尽量不要用下划线

类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头

函数名一律小写,如有多个单词,用下划线隔开

私有函数可用一个下划线开头

变量名尽量小写, 如有多个单词,用下划线隔开

常量采用全大写,如有多个单词,使用下划线隔开