PEP8Python编码规范.doc

合集下载

PythonPEP8编码规范表达式和语句中的空格

PythonPEP8编码规范表达式和语句中的空格

PythonPEP8编码规范表达式和语句中的空格不能忍受的事情在下列情况下,避免使⽤⽆关的空格:紧跟在⼩括号,中括号或者⼤括号后。

Yes: spam(ham[1], {eggs: 2})No: spam( ham[ 1 ], { eggs: 2 } )紧贴在逗号、分号或者冒号之前。

Yes: if x == 4: print x, y; x, y = y, xNo: if x == 4 : print x , y ; x , y = y , x然⽽,冒号在切⽚中就像⼆元运算符,在两边应该有相同数量的空格(把它当做优先级最低的操作符)。

在扩展的切⽚操作中,所有的冒号必须有相同的间距。

例外情况:当⼀个切⽚参数被省略时,空格就被省略了。

推荐:ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]ham[lower:upper], ham[lower:upper:], ham[lower::step]ham[lower+offset : upper+offset]ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]ham[lower + offset : upper + offset] 不推荐ham[lower + offset:upper + offset]ham[1: 9], ham[1 :9], ham[1:9 :3]ham[lower : : upper]ham[ : upper]紧贴在函数参数的左括号之前。

Yes: spam(1)No: spam (1)紧贴索引或者切⽚的左括号之前。

Yes: dct['key'] = lst[index]No: dct ['key'] = lst [index]为了和另⼀个赋值语句对齐,在赋值运算符附件加多个空格。

推荐:x = 1y = 2long_variable = 3不推荐:x = 1y = 2long_variable = 3其他建议避免在尾部添加空格。

PythonPEP8标准

PythonPEP8标准

PythonPEP8标准1.编码1. 如⽆特殊情况,⽂件⼀律使⽤utf-8编码2. 如⽆特殊情况,⽂件头部必须添加# -*- coding:utf-8 -*- 标志2.代码1. 统⼀使⽤四个空格缩进2. 每⾏代码不超过80个字符3. ⾃然语⾔使⽤双引号,如input⾥⾯,或者错误信息,正则表达式使⽤原⽣的双引号r" ",4. 机器标识使⽤单引号,如dict⾥⾯的key,因此代码⾥⾯多数应该使⽤单引号。

5. ⽂档字符串使⽤三个双引号。

""" """3.空⾏1. 模块级函数和类定义之间空两⾏2. 类成员函数之间空⼀⾏3. 可以使⽤多个空⾏分隔多组相关函数4. 函数中可以⽤空⾏分隔出逻辑相关的代码class A:def__init__(self):passdef hello(self):passdef main():pass4.import语句1. import 语句应当分⾏书写2. import语句应当使⽤absolute import3. import语句应当放在⽂件头部,置于模块说明及docstring之后,全局变量之前4. import语句应该按照顺序排列,每组之间⽤⼀个空格分隔,按照内置模块,第三⽅模块,⾃⼰所写的模块调⽤顺序,同时每组内部按照字母表顺序排列#Rightimport osimport sysfrom subprocess import Popen, PIPEfrom foo.bar import Bar#Falseimport os, sysfrom ..bar import Bar5.空格在⼆元运算符两边各空⼀格:[=, - ,+ =, > , in , is ,not , and]i = i + 1x = x * x + 2c = (a + b) * (a - b)函数的参数列表中,","之后要有空格,默认值等号两边不要添加空格,左括号之后,右括号之前不要有空格def complex(real, image=0):pass6.换⾏python⽀持括号内的换⾏,这时有两种情况:1.第⼆⾏缩进到括号的起始处2.第⼆⾏缩进四个空格,适⽤于起始括号就换⾏的情形a = list(var1, var2,var3)a=list(var1,var2,var3)7.注释#号后需空⼀格,不要使⽤⽆意义的注释x = x + 1 # 边框加粗⼀个像素8.docstring1.所有公共模块,函数,类,⽅法都应该有docstring。

PEP8代码规范

PEP8代码规范

PEP8代码规范代码规范由IDE做出,像PyCharmPEPs是Index of Python Enhancement Proposals的缩写,译为:Python增强建议书索引。

其中的PEP8是Style Guide for Python Code,译为:Python代码样式指南。

官⽅⽂档⼀直在更新维护,有需要时也请直接查阅官⽅⽂档。

仅选取了其中的部分内容,略有偏差处,还望⾃证。

Introduction0 介绍内有原⽂如下:This style guide evolves over time as additional conventions are identified and past conventions are rendered obsolete by changes in the language itself.Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.译为:这种风格指南随着时间的推移⽽逐渐演变,随着语⾔本⾝的变化,过去的约定也被淘汰了。

许多项⽬都有⾃⼰的编码风格指南。

在发⽣任何冲突时,这种特定于项⽬的指南优先⽤于该项⽬。

A Foolish Consistency is the Hobgoblin of Little Minds1 愚蠢的⼀致性就像没脑⼦的怪物内有原⽂如下:In particular: do not break backwards compatibility just to comply with this PEP!译为:特别是:不要为了遵守这个PEP⽽破坏向后兼容性!注:向后兼容性(Backward Compatibility),计算机术语,⼜称作向下兼容(Downward Compatibility)。

python-PEP8编码规范-中文简版

python-PEP8编码规范-中文简版

python-PEP8编码规范-中⽂简版
代码布局
缩进:每⼀⾏的缩进使⽤4个空格。

续⾏应该与其包裹的元素对齐,要么使⽤圆括号,⽅括号和花括号内的隐式⾏连接来垂直对齐,要么使⽤挂⾏缩进对齐。

当使⽤挂⾏缩进时,应该考虑到第⼀⾏不应该有参数,以及使⽤缩进以区分⾃⼰是续⾏。

推荐:
制表符还是空格?
空格是⾸选的缩进⽅式。

制表符追能⽤于同样使⽤制表符缩进的代码保持⼀致。

Python3不允许同时使⽤空格和制表符的缩进
混合使⽤制表符和空格的Python2代码应该统⼀转成空格。

当在命令中加⼊-t选项执⾏Python2时,它会发出关于⾮法混⽤制表符与空格的警告。

当使⽤-tt时,这些警告会变成错误,强烈建议使⽤这样的参数。

⾏的最⼤长度
所有⾏限制的最⼤字符数为79.
没有结构化限制的⼤块⽂本(⽂档字符或者注释),每⾏的最⼤字符数限制在72.
限制编辑器窗⼝宽度可以使多个⽂件并⾏打开,并且使⽤代码检查⼯具时⼯作的很好。

python pep8规范

python pep8规范

Python PEP 8规范是一种Python编码风格指南,旨在统一Python程序的可读性,以便大家共同学习、使用和维护Python程序。

它是由Python社区制定的一组编码指南,包括缩进、变量命名、类型注释、模块、表达式和其他编程技巧。

第一,PEP 8指南倡导使用4个空格作为缩进,而不是使用tab键,这样可以确保所有程序的缩进方式一致,使得程序可读性更强。

另外,PEP 8建议缩进块的最大长度不要超过79个字符,以便保证程序易于阅读。

第二,PEP 8指南要求变量名称应该尽量使用小写字母,单词之间使用下划线分隔,而不是使用驼峰命名。

例如,一个名称为“my_variable”的变量,而不是“MyVariable”。

第三,PEP 8指南要求类型注释应该使用“类型:”格式,而不是“type:”。

当声明变量时,应该在变量名称后面添加注释,以提高程序的可读性。

第四,PEP 8指南建议模块名称应该尽量使用小写字母,单词之间使用下划线分隔,模块名称应该尽量简短,并且尽可能使用有意义的名称。

最后,PEP 8指南还建议使用有意义的表达式,并且在表达式中尽可能多地使用空格,以提高代码的可读性。

因此,尽管有些表达式可能只需要一行,但最好将它们拆分成多行,以便更容易理解。

总之,Python PEP 8规范是Python程序的重要参考,它要求程序员遵守一定的编码风格,以便提高Python程序的可读性和可维护性。

PythonPEP8代码规范问题记录

PythonPEP8代码规范问题记录

PythonPEP8代码规范问题记录Python PEP8 代码规范问题记录PEP 8: no newline at end of file代码末尾需要另起⼀⾏PEP 8: indentation is not a multiple of four 缩进不是4的倍数,检查缩进PEP 8: over-indented过度缩进,检查缩进PEP 8: missing whitespace after’,’逗号后缺少空格P EP 8: multiple imports on one line不要在⼀⾏ import 中引⽤多个库PEP 8: blank line at end of line 删除代码末尾的空格PEP 8: at least two spaces before inline comment代码与注释之间⾄少有两个空格PEP 8: block comment should start with ‘#’注释要以#加⼀个空格开始PEP 8: inline comment should start with ‘#’ 注释要以#加⼀个空格开始PEP 8: module level import not at top of file import 不在⽂件的顶部PEP 8: expected 2 blank lines,found 0需要两条空⾏PEP 8: function name should be lowercase函数名应该是⼩写字母PEP 8: missing whitespace around operator操作符 ( ' = '、' > '、' < ' 等 ) 前后缺少空格PEP 8: E305 expected 2 blank lines after class or function definition, found 1 在类的定义以及函数定义之后需要空两⾏PEP 8: E722 do not use bare 'except' 在捕获异常时,请尽可能的提及特定的异常,⽽不要使⽤裸except:⼦句。

PythonPEP8编码规范注释

PythonPEP8编码规范注释

PythonPEP8编码规范注释 与代码相⽭盾的注释⽐没有注释还糟,当代码更改时,优先更新对应的注释! 注释应该是完整的句⼦。

如果⼀个注释是⼀个短语或句⼦,它的第⼀个单词应该⼤写,除⾮它是以⼩写字母开头的标识符(永远不要改变标识符的⼤⼩写!)。

如果注释很短,结尾的句号可以省略。

块注释⼀般由完整句⼦的⼀个或多个段落组成,并且每句话结束有个句号。

在句尾结束的时候应该使⽤两个空格。

当⽤英⽂书写时,遵循Strunk and White (译注:《Strunk and White, The Elements of Style》)的书写风格。

在⾮英语国家的Python程序员,请使⽤英⽂写注释,除⾮你120%的确信你的代码不会被使⽤其他语⾔的⼈阅读。

块注释 块注释通常适⽤于跟随它们的某些(或全部)代码,并缩进到与代码相同的级别。

块注释的每⼀⾏开头使⽤⼀个#和⼀个空格(除⾮块注释内部缩进⽂本)。

块注释内部的段落通过只有⼀个#的空⾏分隔。

、⾏内注释 有节制地使⽤⾏内注释。

⾏内注释是与代码语句同⾏的注释。

⾏内注释和代码⾄少要有两个空格分隔。

注释由#和⼀个空格开始。

事实上,如果状态明显的话,⾏内注释是不必要的,反⽽会分散注意⼒。

⽐如说下⾯这样就不需要:x = x + 1 # Increment x但有时,这样做很有⽤:x = x + 1 # Compensate for border⽂档字符串要为所有的公共模块,函数,类以及⽅法编写⽂档说明。

⾮公共的⽅法没有必要,但是应该有⼀个描述⽅法具体作⽤的注释。

这个注释应该在def那⼀⾏之后。

描述了写出好的⽂档说明相关的约定。

特别需要注意的是,多⾏⽂档说明使⽤的结尾三引号应该⾃成⼀⾏,例如:"""Return a foobangOptional plotz says to frobnicate the bizbaz first."""对于单⾏的⽂档说明,尾部的三引号应该和⽂档在同⼀⾏。

pep8 python 编码规范

pep8 python 编码规范

pep8 python 编码规范
Python 编码规范是一种统一的编码规范,其旨在编写结构清晰、可操作的 Python 代码。

Python 编码规范,又被称为”PEP 8”,是Python 开发者在编码时应遵循的规范。

它产生的目的是要使编写的代
码能够在平台之间迁移时,尽可能的少出现兼容性的问题。

PEP 8包括缩进和格式的规则,能够让代码具有一致的看法和更
易阅读的外观。

它按照78比分的标准,把长行代码分割为两个或以上行,以合理形式缩进。

它还提供了建议性的文件命名规则,帮助程序
员们更容易记忆文件内容。

另外,它还明确了空行的使用及对注释的
规范,帮助程序员编写出具有较高可读性的代码。

Python编码规范还规定程序员应该使用4个空格表示一次缩进,规定使用空格和制表符结合进行代码格式化以及控制条件之间的空格,禁止在字符串和注释开始和结束处使用空格等。

PEP 8 规定的编码规范一定程度上可以提高程序员的编码水平,
使html代码块更整洁、模块之间的代码更清晰,发挥程序员工作效率
的同时,也能减少非必要的错误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PEP8 Python 编码规范
1代码编排
1.1 缩进。

4 个空格的缩进(编辑器都可以完成此功能),不使用 Tap,更不能混合使
用 Tap 和空格。

1.2 每行最大长度 79,换行可以使用反斜杠,最好使用圆括号。

换行点要在操作符的
后边敲回车。

1.3 类和 top-level 函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无
关段落之间空一行;其他地方尽量不要再空行。

2文档编排
2.1 模块内容的顺序:模块说明和docstring — import — globals&constants —其他定义。

其中 import 部分,又按标准、三方和自己编写顺序依次排放,之间空一行。

2.2 不要在一句 import 中多个库,比如 import os, sys 不推荐。

2.3 如果采用 from XX import XX 引用库,可以省略‘ module. ’,都是可能出现命名冲
突,这时就要采用 import XX 。

3空格的使用
总体原则,避免不必要的空格。

3.1 各种右括号前不要加空格。

3.2 逗号、冒号、分号前不要加空格。

3.3 函数的左括号前不要加空格。

如Func(1)。

3.4 序列的左括号前不要加空格。

如list[2] 。

3.5 操作符左右各加一个空格,不要为了对齐增加空格。

3.6 函数默认参数使用的赋值符左右省略空格。

3.7 不要将多句语句写在同一行,尽管使用‘;’允许。

3.8 if/for/while 语句中,即使执行语句只有一句,也必须另起一行。

4注释
总体原则,错误的注释不如没有注释。

所以当一段代码发生变化时,第一件事就
是要修改注释!注释必须使用英文,最好是完整的句子,首字母大写,句后要有结
束符,结束符后跟两个空格,开始下一句。

如果是短语,可以省略结束符。

4.1块注释,在一段代码前增加的注释。

在‘ #’后加一空格。

段落之间以只有‘#’的行间
隔。

比如:
#Description : Module config.
#
#Input : None
#
# Output : None
4.2行注释,在一句代码后加注释。

比如:x = x + 1# Increment x
但是这种方式尽量少使用。

4.3避免无谓的注释。

5文档描述
5.1 为所有的共有模块、函数、类、方法写docstrings ;非共有的没有必要,但是可以
写注释(在 def 的下一行)。

5.2 如果 docstring 要换行,参考如下例子,详见 PEP 257
"""Return a foobang
Optional plotz says to frobnicate the bizbaz first.
"""
6命名规范
总体原则,新编代码必须按下面命名风格进行,现有库的编码尽量保持风格。

6.1 尽量单独使用小写字母‘ l ’,大写字母‘ O’等容易混淆的字母。

6.2 模块命名尽量短小,使用全部小写的方式,可以使用下划线。

6.3 包命名尽量短小,使用全部小写的方式,不可以使用下划线。

6.4 类的命名使用CapWords 的方式,模块内部使用的类采用_CapWords 的方式。

6.5 异常命名使用CapWords+Error 后缀的方式。

6.6 全局变量尽量只在模块内有效,类似 C 语言中的 static。

实现方法有两种,一是
__all__机制 ;二是前缀一个下划线。

6.7 函数命名使用全部小写的方式,可以使用下划线。

6.8 常量命名使用全部大写的方式,可以使用下划线。

6.9 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。

6.10 类的属性有 3 种作用域 public 、 non-public 和 subclass API,可以理解成C++中的
public 、private 、 protected , non-public 属性前,前缀一条下划线。

6.11 类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式。

6.12 为避免与子类属性命名冲突,在类的一些属性前,前缀两条下划线。

比如:类 Foo
中声明 __a,访问时,只能通过Foo._Foo__a,避免歧义。

如果子类也叫Foo,那就
无能为力了。

6.13 类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。

7编码建议
7.1 编码中考虑到其他python 实现的效率等问题,比如运算符‘+’在 CPython( Python )
中效率很高,都是Jython 中却非常低,所以应该采用 .join() 的方式。

7.2 尽可能使用‘ is’‘ is not ’取代‘ ==’,比如 if x is not None 要优于 if x。

7.3 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自 Exception。

7.4 异常中不要使用裸露的 except, except 后跟具体的 exceptions。

7.5 异常中 try 的代码尽可能少。

比如:
try:
value = collection[key]
except KeyError:
return key_not_found(key)
else:
return handle_value(value)
要优于
try:
# Too broad!
return handle_value(collection[key])
except KeyError:
#Will also catch KeyError raised by handle_value()
return key_not_found(key)
7.6 使用 startswith() and endswith() 代替切片进行序列前缀或后缀的检查。

比如:
Yes: if foo.startswith('bar'): 优于
No: if foo[:3] == 'bar':
7.7 使用 isinstance()比较对象的类型。

比如
Yes: if isinstance(obj, int): 优于
No: if type(obj) is type(1):
7.8 判断序列空或不空,有如下规则
Yes: if not seq:
if seq:
优于
No: if len(seq)
if not len(seq)
7.9 字符串不要以空格收尾。

7.10 二进制数据判断使用if boolvalue 的方式。

相关文档
最新文档