PEP是一个文档,其中包含最佳实践和python代码编写指导方针。文档的主要目标是提高一致性和Python代码的可读性,Guido Van Rossum所写,尼克Coghlan,华沙和巴里。
PEP或Python增强建议用于定义新特性,比如Python的风格和设计。但是我们需要一个鼓舞士气,是问题吗?
PEP 8的基本目标是提高代码的可读性。Guido Van Rossum自己说,代码读比写更频繁。这是因为它只会写一次,不管你花了多长时间写脚本。
这不是相同的阅读脚本。代码可读的作家或其他开发人员多次。因此,您必须能够理解它的工作原理和它所做的每一次你看代码。
如果你遵循的指导方针在PEP 8上市,你会正确命名变量,添加空格,你可以遵循的逻辑代码。
,让它更容易阅读,你还应该把评论你的脚本。PEP 8之后,也变得更重要了,当你找一份设计师的工作。
下载详细的小册子和获得免费访问在线直播Demo类与行业专家。
我们来详细探讨PEP 8文档的所有功能,使代码更容易阅读:
命名约定
编码时,有几件事你必须给一个名字像变量、类、函数、包,等。因此,为未来节省时间和精力,你需要选择有意义的名称。这意味着您应该能够找出在变量只是看到它的名字。使用不合适的名字只会增加你的问题在调试。
这是常见的命名列表风格在Python中,您应该使用编码:
变量——一个字母,一个词或多个词使用下划线分隔,小写。例如var, the_variable。
函数——使用单词或多个单词下划线隔开,小写。例如func the_function。
常数——使用一个字母、单词或多个词下划线隔开,所有大写。例如,CONST THE_CONSTANT。
方法——用一个词或多个词下划线隔开,小写。例如,方法,the_method。
类——一个词或多个词没有下划线分开它们。第一个字母应该大写。这种格式f字称为驼峰式大小写。例如,模型,MyClass。
模块——一个短词或多个词下划线隔开,小写。例如module_example.py。
包——一个短词下划线隔开,小写。例如packageexample。
现在命名约定时,选择正确的格式是不够的。你也必须选择正确的名字。这里有一些技巧,这些技巧将帮助你有效地名字:
之前给你的变量名称,功能,方法或类,您需要确保它使代码可读性。你需要做的是把描述性的名字,清楚地显示对象代表什么。
让我们先从变量。这是一个非常常见的错误在初学者使用一个单字母名称等变量x或y。但不知道它代表什么。下面的示例中描述的问题:
> > >> > > #不推荐> > >x=“约翰·史密斯”> > >y,z=x。split ()> > >打印(z,y,9月=”、“)“约翰·史密斯”
现在,这只会工作当你确切的知道x, y, z。这将变得更加困惑,当你工作在复杂的项目中有数以千计的变量或你正在与其他开发人员。这是一个例子,一个明确的选择的变量:
> > >> > >推荐#> > >的名字=“约翰·史密斯”> > >first_name、last_name=的名字。split ()> > >打印(last_name、first_name、9月=”、“)“约翰·史密斯”
这将增加你的时间花在打字,但整体优势,它提供了通过提供可读性弥补了这一缺陷。同时,你必须避免使用缩写代码中的命名对象时。这里是一个例子,db()是一个函数,x,一个参数,双打。
#不推荐defdb (x):返回x*2
你可能会认为使用db作为缩写双是一个明智的选择。但如果你回到这段代码几天之后,你可能会忘记你怎么缩写代码难以理解。现在,如果你使用下面的示例中,您将能够什么函数得到一个清晰的想法,即使你看看几周或几个月的代码:
#推荐defmultiply_by_two (x):返回x*2
同样可以应用于所有其他参与Python对象和数据类型。你必须使用描述性名称。
代码布局
代码的可读性的另一个主要方面是代码布局。在这里您将了解添加垂直空格为提高代码的可读性。
空白行
空行或垂直空格中扮演一个重要的角色为提高代码的可读性。如果你的代码集中起来,可以得到压倒性的使它很难阅读。如果你添加太多的空白,它会使代码看起来稀疏和不必要的读者将会向下滚动。
这里有三个指南将帮助您了解如何正确使用空行或垂直空格:
使用两个空行类和顶级功能
很重要的是,你独立的顶级类和函数分别和处理他们的功能。垂直空间周围可以帮助清理他们的边界。看看这个例子:
类MyFirstClass:通过类MySecondClass:通过deftop_level_function ():返回没有一个
使用一个空行类的内部存在对周围的方法定义
所有在场的函数类的关系。所以,你需要离开他们之间只是一行:
类MyClass:deffirst_method (自我):返回没有一个defsecond_method (自我):返回没有一个
使用空行内部函数清理步骤
复杂的函数可能有几个步骤之前返回语句。帮助读者更好地理解函数的逻辑,你需要每一步后留下一个空行。这里是一个例子,一个函数用于计算列表的方差。之间有一个空行之前的两个步骤的功能和返回语句:
defcalculate_variance (number_list):sum_list=0为数量在number_list:sum_list=sum_list+数量的意思是=sum_list/len(number_list)sum_squares=0为数量在number_list:sum_squares=sum_squares+数量* *2mean_squares=sum_squares/len(number_list)返回mean_squares- - - - - -的意思是* *2
空行或垂直空格可以帮助读者理解代码是怎么分成不同的部分,一个部分是如何与其他有关。
最大线长度和线断裂
根据PEP 8日线是79个字符的限制。这可以让你避免线包装和相邻打开多个文件。然而,这并不总是可能的语句在79个字符。PEP 8包含允许多行语句运行的方式。如果括号,括号,括号中使用的代码,将假定线延续Python。看看下面的例子:
def函数(arg_one,arg_two,arg_three,arg_four):返回arg_one如果你不能得到隐含的延续,你可以使用反斜杠来打破行:从mypkg进口例二,\example2,青年们
如果隐含延续不为你工作,你有使用线断裂,你需要确保你打破二元操作符之前的线。这是一个打破二元运算符之前的线的例子:
#推荐总=(first_variable+second_variable- - - - - -third_variable)
很清楚地看到哪个变量添加或减去。这是另一个例子后的线是打破二元运算符:
#不推荐总=(first_variable+second_variable- - - - - -third_variable)
很难看到哪些变量是添加或减去。
缩进
也被称为前导空白,缩进使得代码的可读性,扮演着重要的角色。缩进显示不同的语句代码被组合在一起。考虑一下:
x=3
如果x>5:
打印(“x大于5”)
print语句缩进,这表明它应该执行只有在如果条件为真。缩进也显示了代码属于哪个类,代码应该是当一个函数被调用执行。这里有PEP 8的关键缩进规则:
- 用空格代替制表符
- 连续4个空格缩进
如果您正在使用空格和制表符缩进,你会有错误。检查你需要运行代码一致性- t国旗。如果有空格和制表符的不一致,由解释器将发出警告:
美元python2 - t code.py代码。py:不一致的使用制表符和空格缩进如果你想知道确切位置不一致,您需要使用tt国旗问题错误,不是警告:美元python2 tt code.py文件”代码。py”,第3行打印(i, j)
^
TabError:不一致的使用制表符和空格缩进
如果你正在Python3,所有空格和制表符的问题不一致是自动的问题:
美元python3 code.py文件”代码。py”,第3行打印(i, j)^
TabError:不一致的使用制表符和空格缩进
缩进后换行符
你需要使用缩进,当你打破行保持语句在79个字符。这将帮助读者在区分一行代码和两行代码。有两个缩进风格,您可以使用:
调整块的分隔符def函数(arg_one,arg_two,arg_three,arg_four):返回arg_one
你需要4空间调整的分隔符的代码。现在,if语句的嵌套代码块,压痕可以是一个小技巧。看看下面的例子:
x=5如果(x>3和x<10):打印(x)
为解决这个问题,PEP 8提供了两个选择:
最后的条件后,添加一个评论。这将单独从嵌套代码由于语法高亮显示的选项可用在大多数编辑器:
x=5如果(x>3和x<10):#两个条件满足打印(x)
的延续,添加一个额外的缩进:
x=5如果(x>3和x<10):打印(x)
悬挂式缩进缩进的是另一种风格。在这方面,每一行的块缩进,除了第一。在这方面,不得有任何参数在第一行。这是一个例子:
var=函数(arg_one,arg_two,arg_three,arg_four)#不推荐var=函数(arg_one,arg_two,arg_three,arg_four)
当你正在悬挂式缩进,想区分内继续行功能,您需要添加一个额外的压痕。在下面的示例中,代码的缩进级别和持续线都是一样的,很难读:
#不推荐def函数(arg_one,arg_two,arg_three,arg_four):返回arg_one
现在,如果你使用双连续行缩进它将帮助你区分功能的身体和参数:
def函数(arg_one,arg_two,arg_three,arg_four):返回arg_one
将关闭撑在哪里
当你正在与延续,很容易忘记关闭括号,括号,括号。有两个选项提供的PEP 8关闭撑的延续行:
用排队的第一个非空字符结束括号前一行:
list_of_numbers=(1,2,3,4,5,6,7,8,9]
使用的第一个字符为排队关闭括号。
list_of_numbers=(1,2,3,4,5,6,7,8,9]
评论
一旦你写的代码,您需要将评论添加到文档中。这很重要,因为它有助于未来你和任何其他的合作者理解代码。当你添加注释时,你需要记住以下要点:
- 用完整的句子第一个词以大写开头。
- 评论的长度限制在72个字符。
- 更新的评论,当你更改的代码。
块注释
为记录一小部分代码,您应该使用块注释。他们尤其有益,当你执行一个动作通过编写多行代码更新一个条目的数据库或从文件中导入数据。这里有一些规则编写注释块根据PEP 8文档:
- 使用#每一行开始,后跟一个空间。
- 使用单一#分离段的一条线。
- 缩进代码块评论一样。
看看下面的例子,一块注释用于解释for循环:
为我在范围(0,10):
#循环我十倍,打印出我的价值,一个紧随其后#新行字符打印(我,' \ n ')
如果代码很复杂,你可能需要在块中输入超过一段评论:
def二次(,b,c,x):#计算使用二次二次方程的解#公式。##总有两个解二次方程,x_1、x_2。x_1=(- - - - - -b+(b* *2- - - - - -4*一个*c)* *(1/2))/(2*一)x_2=(- - - - - -b- - - - - -(b* *2- - - - - -4*一个*c)* *(1/2))/(2*一)返回x_1、x_2
内联注释
这些类型的评论是用于解释一条语句是一个代码。这是守则在PEP 8内联注释:
- 内联注释必须谨慎使用。
- 他们必须写在同一行都是指行代码。
- 使用超过2个空间分离的内联注释语句。
- 使用#和一个空格开始内联注释。
这是一个内联注释的例子。
x=5#这是内联注释
文档字符串
括在单引号或双引号,文档字符串存在任何函数的第一行,方法,类或模块。他们是用于解释和记录的代码块。这里的规则是应用文档字符串的代码:
- 的正确方法使用报价在文档字符串”““这是docstring”””。
- 他们必须提到所有的公共功能,类、模块和方法。
- 添加“”的docstring多行。
这是一个例子,这将有助于您更好地理解文档字符串的使用:
def二次(,b,c,x):”“”通过二次公式解二次方程。一个二次方程具有以下形式:ax * * 2 + bx + c = 0总有两个解二次方程:x_1 & x_2。”“”x_1=(- - - - - -b+(b* *2- - - - - -4*一个*c)* *(1/2))/(2*一)x_2=(- - - - - -b- - - - - -(b* *2- - - - - -4*一个*c)* *(1/2))/(2*一)返回x_1、x_2
你需要保持“”“在同一行一行文档字符串:
def二次(,b,c,x):使用二次公式”“”“x_1=(- - - - - -b+(b* *2- - - - - -4*一个*c)* *(1/2))/(2*一)x_2=(- - - - - -b- - - - - -(b* *2- - - - - -4*一个*c)* *(1/2))/(2*一)返回x_1、x_2
表达式和语句的空白
你必须用空格表达式和语句的代码可读性。但是你必须非常小心太多空格将结合相关术语困难和空白太少会使代码难以阅读。
空白在二元操作符
当您使用的是二元操作符,你需要使用一个空格。当你分配一个值函数的参数,您不必使用空间:
#推荐
def函数(default_parameter=5):
#…
#不推荐
def函数(default_parameter=5):
#…
当有多个运营商,您应该使用周围的空白最低优先级的操作符:
#推荐
y=x* *2+5
z=(x+y)*(x- - - - - -y)
#不推荐
y=x* *2+5
z=(x+y)*(x- - - - - -y)
当你正在与片,冒号就像二元操作符。所以同样的规则也适用于他们。
列表(3:4]
#治疗结肠为最低优先级的操作符
列表[x+1:x+2]
#在长片,两个冒号必须
#相同数量的空格包围
列表(3:4:5]
列表[x+1:x+2:x+3]
#空间省略如果省略一片参数
列表[x+1:x+2:]
避免添加空格
在某些情况下,添加空白可以使代码难以阅读,使其稀疏。了PEP 8所以有些地方你应该避免使用空格。线的结束就是这样一个地方。称为尾随空格,它不能被看到,可以创建错误不能被追踪。这里是一个列表列出一些其他情况下不应该使用空格:
- 在括号,括号,括号:
#推荐my_list=(1,2,3]#不推荐my_list=(1,2,3,]
- 前一个冒号,分号或逗号:
x=5y=6#推荐打印(x,y)#不推荐打印(x,y)
- 函数的参数的开括号开始之前:
def双(x):返回x*2#推荐双(3)#不推荐双(3)
- 开放前括号开始一片或一个索引:
#推荐列表(3]#不推荐列表(3]
关闭括号和落后之间的逗号:
#推荐元组=(1,)#不推荐元组=(1,)
- 调整的赋值操作符:
#推荐var1=5var2=6some_long_var=7#不推荐var1=5var2=6some_long_var=7
编程的建议
本节将介绍PEP 8所提供的建议保持一致性和消除歧义。
- 不要使用布尔值比较的等价算子真或假。
- 空序列在if语句是错误的。
- 在if语句,而不是“不”,用“不是”。
- 如果x不是没有,如果x:不使用。
- 切,而是试着用.startswith()和.endswith ()。
忽略PEP 8
PEP 8可以帮助你创造一个清洁,可读和专业代码。所以,你不应该忽视PEP 8。不过,您可以避免PEP 8,如果造成不便在下列情况下:
- 遵守PEP 8减免兼容软件。
- 您正在与不符合的代码PEP 8。
- 你必须使代码与Python的旧版本兼容。
确保遵循PEP 8所示的代码
你可能不记得PEP 8文档中提到的所有规则。加速的过程让你的代码编译PEP 8,你可以带一些工具的帮助下,包括以下:
1。剥绒机
这些是用于分析代码和标记错误。他们也显示建议修复错误。您可以添加扩展编辑器。pycodestyle短绒检查的代码风格规范中提到的PEP 8。Flake8是另一个短绒工具功能的调试器,pycodestyle, pyflakes。
2。Autoformatters
这些程序是用于自动重构的代码符合约定的PEP 8。黑色是一个这样的程序。
有时这些指导方针能感觉到迂腐,但是你需要记住他们帮助改进你的代码,这样你的合作者或者潜在的雇主可以理解的代码。它使代码可读的和高质量的。
最终的想法
你可以成为一个高度合格的Python程序员通过采取一个Python编程过程。任何有抱负的程序员可以学习从的基本面的Python和继续来技巧Python后的课程。