PEP8Python编码规范.doc
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标准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代码规范代码规范由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编码规范-中⽂简版
代码布局
缩进:每⼀⾏的缩进使⽤4个空格。
续⾏应该与其包裹的元素对齐,要么使⽤圆括号,⽅括号和花括号内的隐式⾏连接来垂直对齐,要么使⽤挂⾏缩进对齐。
当使⽤挂⾏缩进时,应该考虑到第⼀⾏不应该有参数,以及使⽤缩进以区分⾃⼰是续⾏。
推荐:
制表符还是空格?
空格是⾸选的缩进⽅式。
制表符追能⽤于同样使⽤制表符缩进的代码保持⼀致。
Python3不允许同时使⽤空格和制表符的缩进
混合使⽤制表符和空格的Python2代码应该统⼀转成空格。
当在命令中加⼊-t选项执⾏Python2时,它会发出关于⾮法混⽤制表符与空格的警告。
当使⽤-tt时,这些警告会变成错误,强烈建议使⽤这样的参数。
⾏的最⼤长度
所有⾏限制的最⼤字符数为79.
没有结构化限制的⼤块⽂本(⽂档字符或者注释),每⾏的最⼤字符数限制在72.
限制编辑器窗⼝宽度可以使多个⽂件并⾏打开,并且使⽤代码检查⼯具时⼯作的很好。
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代码规范问题记录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编码规范注释 与代码相⽭盾的注释⽐没有注释还糟,当代码更改时,优先更新对应的注释! 注释应该是完整的句⼦。
如果⼀个注释是⼀个短语或句⼦,它的第⼀个单词应该⼤写,除⾮它是以⼩写字母开头的标识符(永远不要改变标识符的⼤⼩写!)。
如果注释很短,结尾的句号可以省略。
块注释⼀般由完整句⼦的⼀个或多个段落组成,并且每句话结束有个句号。
在句尾结束的时候应该使⽤两个空格。
当⽤英⽂书写时,遵循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 编码规范
Python 编码规范是一种统一的编码规范,其旨在编写结构清晰、可操作的 Python 代码。
Python 编码规范,又被称为”PEP 8”,是Python 开发者在编码时应遵循的规范。
它产生的目的是要使编写的代
码能够在平台之间迁移时,尽可能的少出现兼容性的问题。
PEP 8包括缩进和格式的规则,能够让代码具有一致的看法和更
易阅读的外观。
它按照78比分的标准,把长行代码分割为两个或以上行,以合理形式缩进。
它还提供了建议性的文件命名规则,帮助程序
员们更容易记忆文件内容。
另外,它还明确了空行的使用及对注释的
规范,帮助程序员编写出具有较高可读性的代码。
Python编码规范还规定程序员应该使用4个空格表示一次缩进,规定使用空格和制表符结合进行代码格式化以及控制条件之间的空格,禁止在字符串和注释开始和结束处使用空格等。
PEP 8 规定的编码规范一定程度上可以提高程序员的编码水平,
使html代码块更整洁、模块之间的代码更清晰,发挥程序员工作效率
的同时,也能减少非必要的错误。
Pycharm编码时-PEP8代码规范问题
Pycharm编码时-PEP8代码规范问题在使⽤PyCharm时,最右边会有波浪线警告提⽰代码不符合。
记录⼀下犯的错和解决⽅式PEP8是风格错误,⽽不是编码错误。
只是为了让代码更具有阅读性。
1)block comment should start with #这个提⽰是在使⽤#注释的时候,需要在#后加上⼀个空格,然后再写注释内容2)missing whitespace after ',' 或 missing whitespace after ':'在使⽤,或者:时,需要在后⾯加⼀个空格分割3)whitespace before ','提⽰,前⾯不需要空格,去掉空格即可4)class name should use CamelCase convention提⽰类名应该使⽤单词⾸字母⼤写的⽅式来命名,类名每个单词的⾸字母⼤写即可5)expected 2 blank lines ,found 1提⽰需要两个空⾏。
只找到0或者1。
加到两个空⾏即可6)remove redundant parentheses提⽰删除括号,如果类没有继承别的类。
该类名之后可以不需要加上()。
把()去掉即可7)Triple double-quoted strings should be used for docstrings应该使⽤三种双引号。
写在类⾥和⽅法的注释使⽤了单引号。
换成双引号的就可以了8)too many blank lines(2)提⽰空⾏过多,⽅法和⽅法之间⼀个空⾏就⾏9)shadows name 'xxxx' from outer scope命名冲突,提⽰外部变量和⽅法内的局部变量命名⼀样了。
⼀种风险提⽰。
改下变量名即可10)Too broad exception clause提⽰捕获异常的范围太⼴了,没有针对性。
可以在try语句加上注释# noinspection PyBroadException11)argument name should be lowercase参数名应该⼩写12)missing whitespace around operator 等于号两边缺少空格13)blank line at end of file代码结束时,有多个空⾏,只需要⼀个空⾏14)line too long(xxx > 120 characters)单⾏代码长度过长,字符长度超过120。
PEP8-Python编码规范
PEP8-Python编码规范PEP8-Python编码规范PEP 8的官⽅⽂档:使⽤IDE:pycharm(默认检查代码规范)⼀:代码布局1. 缩进:每个缩进级别使⽤4个空格。
def __init__(self, key, **redis_kwargs):self.__db = redis.Redis(**redis_kwargs)self.key = key2 制表符or空格空格是⾸选的缩进⽅法。
Python 3不允许混合使⽤制表符和空格来缩进。
Python 2代码缩进与制表符和空格的混合应转换为使⽤空格专有。
有研究显⽰:使⽤空格缩进的程序员的薪资⽐使⽤制表符缩进的程序员的薪资多8%。
所以⼀定要⽤空格缩进呀。
3 每⾏代码的最⼤长度:将所有⾏限制为最多79个字符。
Python标准库是保守的,需要将⾏限制为79个字符(⽂档字符串/注释为72)。
4 空⽩⾏:⽤两个空⽩⾏分隔顶层函数和类定义。
类中的⽅法定义⽤⼀个空⾏分隔。
可以使⽤额外的空⽩⾏(节省空间)来分隔相关功能组。
在⼀堆相关的单⾏程序(例如⼀组虚拟执⾏程序)之间可能会省略空⽩⾏。
在函数中使⽤空⾏来节省逻辑部分。
恰当的使⽤空⽩⾏可以提⾼代码的可读性。
5 源⽂件编码:核⼼Python发⾏版中的代码应该始终使⽤UTF-8(或Python 2中的ASCII)。
使⽤ASCII(Python 2)或UTF-8(Python 3)的⽂件不应该有编码声明。
但是在Python 2中使⽤UTF-8编码就需要有编码声明:# -*- coding: utf-8 -*-#! /usr/bin/env python2上⾯两⾏代码常放在Python 2代码中的开头,第⼀⾏意思是指定源⽂件以utf-8格式编码,第⼆⾏意思是指定源⽂件的python解释器在环境变量中去寻找。
6 导⼊库函数:若是导⼊多个库函数,应该分开依次导⼊:import requestsimport csv导⼊总是放在⽂件的顶部,在任何模块注释和⽂档字符串之后,在模块全局变量和常量之前。
pep8编码规范
pep8编码规范⽂档地址1. pep8(python代码样式规范)2. pep257(Python⽂档字符串相关的约定)3. pep20 (python的禅宗)代码样式规范(pep8)1.⾏缩进:tab(4个空格)隐式⾏连接缩进1、对齐2、层级缩进3、\# 对齐缩进# 对齐缩进foo = dict(name="MuSen", age=18,gender="男", height="180")# 层级缩进(为了区别应当再缩进四格)def fun_add(a, b=200,c=1000, d=2000):return a, b, c, d# ⾏连线 \with open("txt1.txt") as f1,\open("txt2.txt") as f2:f1.read()f2.read()2. 单⾏字符限制所有⾏限制的最⼤字符数为79个没有结构化限制的⼤块⽂本(⽂档字符或者注释),每⾏最⼤字符数限制在723. 空⾏顶级函数和类的定义之间有两⾏空⾏类内部的函数定义之间有⼀个空⾏4. 源⽂件编码⽅式Python核⼼发布中的的代码应该始终UTF-8(Python2中默认是ASCII编码)Python3中不应该有编码声明5. 注释1、与代码组⽭盾的注释⽐没有注释还糟,代码有更新,更新对应的的注释!2、如果注释很短,结尾句号可以省略。
块注释⼀般由完整句⼦的⼀个或多个段落组成,并且每句话结束有个句号。
在句尾结束的时候应该使⽤两个空格3、在⾮英语国家的Python程序员,请使⽤英⽂写注释,除⾮你120%的确信你的代码不会被其他语⾔的⼈阅读----忽略⾏内注释⾏内注释和代码⾄少要有两个空格分离注释由#和⼀个空格开始,有节制的使⽤a = 6print(a) # 打印a块注释块注释通常使⽤与跟随他们的某些(或全部)代码,并锁紧到与代码相同的级别。
pep8规范
pep8规范[PEP 8规范简介]PEP 8(Python Enhancement Proposal) 规范是Python语言最流行的编程风格指导手册,它指导你如何编写Python代码最好的格式、设计等。
它详细地定义了编码规范,比如字母大小写、缩进、空格、标识符名称、函数和变量声明、模块导入,以及注释等。
PEP 8通过严格定义命名规范、代码风格和组织,使得Python代码更加简洁、容易阅读和理解,使团队协作更容易。
1. PEP 8概述PEP 8(Python Enhancement Proposal)规范是Python编码风格指南,它提供了一种技术和语义上的指南来增加Python代码的一致性和可读性,这些指南涵盖了可维护性、模块结构、可重用组件的设计、命名约定、代码风格及其他方面。
2. 命名规范PEP 8利用一整套定义明确的规则,将对象的命名分为几种不同的类别,分别有使用小写字母,数字和下划线字符组成,其中类名要以大写字母开头,函数和变量名要以小写字母开头,并且应该采用有意义的名字,以致于可以显著地增强其可读性和可维护性,除了属性名要以_符号开始,私有变量要以__符号开始,对象的属性和方法不能使用同一个名字。
3. 代码风格PEP 8中的代码风格有缩进,空行,行长度,空格,标识符名称,函数和变量声明,模块导入和注释等。
缩进要求使用4个空格符,每行最长不超过79个字符,在使用括号时应遵守空格缩进规则,在变量之间和运算符之间使用一个空格来维持可读性,复杂的表达式拆分的时候要做缩进,以方便阅读。
4. 导入PEP 8要求每个模块仅导入本模块所必需的依赖模块,而不是大量冗余的模块。
要求模块 import 应该放在所有函数和类定义之前,并鉴于模块导入,PEP 8鼓励使用统一的导入顺序,即:标准库模块,第三方模块,自定义模块。
5. 注释PEP 8定义了一种常见的注释规范,它说明了文档字符串,即Python特殊注释。
PythonPEP8编码规范中文版
PythonPEP8编码规范中⽂版Code lay-out 代码布局Indentation 缩进Tabs or Spaces 制表符还是空格Maximum Line Length ⾏的最⼤长度Should a line break before or after a binary operator 在⼆元运算符之前应该换⾏吗Blank Lines 空⾏Source File Encoding 源⽂件编码Imports 导⼊Module level dunder names 模块级的呆名String Quotes 字符串引号Whitespace in Expressions and Statements 表达式和语句中的空格Pet Peeves 不能忍受的事情Other Recommendations 其他建议Comments 注释Block Comments 块注释Inline Comments ⾏内注释Documentation Strings ⽂档字符串Naming Conventions 命名规范Overriding Principle 最重要的原则Descriptive Naming Styles 描述命名风格Prescriptive Naming Conventions 约定俗成命名约定Names to Avoid 应避免的名字Package and Module Names 包名和模块名Class Names 类名Exception Names 异常名Global Variable Names 全局变量名Function Names 函数名Function and method arguments 函数和⽅法参数Method Names and Instance Variables ⽅法名和实例变量Constants 常量Designing for inheritance 继承的设计Public and internal interfaces 公共和内部的接⼝Programming Recommendations 编程建议Function Annotations 功能注释。
Python常用PEP8编码规范详解
Python常⽤PEP8编码规范详解Python 常⽤ PEP8 编码规范代码布局缩进每级缩进⽤4个空格。
括号中使⽤垂直隐式缩进或使⽤悬挂缩进。
EXAMPLE:# (垂直隐式缩进)对准左括号foo = long_function_name(var_one, var_two,var_three, var_four)# (悬挂缩进) ⼀般情况只需多⼀层缩进foo = long_function_name(var_one, var_two,var_three, var_four)# (悬挂缩进) 但下⾯情况, 需再加多⼀层缩进,和后续的语句块区分开来def long_function_name(var_one, var_two, var_three,var_four):print(var_one)# 右括号回退my_list = [1, 2, 3,4, 5, 6,]result = some_function_that_takes_arguments('a', 'b', 'c','d', 'e', 'f',)错误⽰范:# 不使⽤垂直对齐时,第⼀⾏不能有参数。
foo = long_function_name(var_one, var_two,var_three, var_four)# 参数的悬挂缩进和后续代码块缩进不能区别。
def long_function_name(var_one, var_two, var_three,var_four):print(var_one)# 右括号不回退,不推荐my_list = [1, 2, 3,4, 5, 6,]result = some_function_that_takes_arguments('a', 'b', 'c','d', 'e', 'f',)最⼤⾏宽1. 每⾏最⼤⾏宽不超过 79 个字符2. ⼀般续⾏可使⽤反斜杠3. 括号内续⾏不需要使⽤反斜杠EXAMPLE:# ⽆括号续⾏,利⽤反斜杠with open('/path/to/some/file/you/want/to/read') as file_1, \open('/path/to/some/file/being/written', 'w') as file_2:file_2.write(file_1.read())# 括号内续⾏,尽量在运算符后再续⾏class Rectangle(Blob):def __init__(self, width, height,color='black', emphasis=None, highlight=0):if (width == 0 and height == 0 andcolor == 'red' and emphasis == 'strong' orhighlight > 100):raise ValueError("sorry, you lose")if width == 0 and height == 0 and (color == 'red' oremphasis is None):raise ValueError("I don't think so -- values are %s, %s" %(width, height))空⾏1. 两⾏空⾏⽤于分割顶层函数和类的定义2. 单个空⾏⽤于分割类定义中的⽅法EXAMPLE:# 类的⽅法定义⽤单个空⾏分割,两⾏空⾏分割顶层函数和类的定义。
python的pep8编码规范
python的pep8编码规范
···
python的pep8编码规范
1、每个缩进层级使用4个空格。
2、每行最多79个字符。
3、顶层的函数(def)或类(class)的定义之间空两行。
4、采用ASCII或UTF-8编码文件。
(就是在里面表明编码格式,ASCII编码格式或者是UTF-8的编码格式)
5、在文件的顶端,注释和文档说明之下,每行每条import语句只导入一个模块,
同时要按标准库、第三方库和本地库的导入顺序进行分组。
(标准库是下载python后就有的,也就是python自带的,要是需要下载,无论是pip还是其他,都是第三方库。
而本地库就是自己创建的)
6、在小括号、中括号、大括号之间或者括号之前没有额外的空格
7、类(class)的命名采用驼峰命名法,如CamelCase;异常的定义使用Error前缀(如适用的话);函数的命名采用下划线分隔的小写字母,如separateed_by_underscores;用下划线开头定义私有的属性或方法,如_private
自动检查代码标准的pep8工具
pep8会在哪里显示哪行哪里违反了pep8的,并为每个问题提供了其错误码,要是违反了那些必要的遵守规范,p便会爆出错误(以E 开头的的错误码),如果是细微的问题则会报警告(以W开头的错误码)。
跟在字母后面的3位数则是错误或者警告,可以从中看出大概的错误类别。
例如以E2开头的错误通常是与空格有关,以E3开头的错误通常与空行有关,而以w6开头的警告则表明使用已经废弃的功能。
···。
Python专题——PEP8代码编写规范
1.代码布局设计1.1 缩进A、使用四个空格来进行缩进B、换行的时候可以使用反斜杠,最好的方法是使用圆括号,在使用反斜杠的时候,在反斜杠的后直接回车,不能有任何空格存在.比较好的做法如下:包含更多的缩进表示是剩余部分:悬挂缩进应该添加一个级别:比较差的做法如下:(代码同样是可以运行的)对于续行来说,四个空格的缩进是可选的。
可选的如下:当使用if语句的时候,如果条件恰好的缩进为四个空格空格,那么导致后面的语句的缩进也是四个空格,那么这种情况下是可以接受的,如下所示:没有额外的缩进:添加一个注释来进行分割缩进,做到语法高亮显示:在续行中添加额外的缩进:成对的小括号,中括号在多行的结构中可以写成多行,然后括号在第一个不为空白的位置结束。
如下:或者对齐第一个字符的位置结束,如下:1。
2 tab和空格的选择关于tab的空格的选择,在python2中是可以混用的,但是在python3中,只能用一种风格。
1。
3 最大行长度行的最大长度为79个字符在书写文档或者是注释的时候,行长度应该控制在72个字符.反斜杠在有的时候是适用的,例如在参数很长,但是不能隐式的使用多行的时候,如下反斜杠的使用:确保在合适的时候将连续的行进行分开,最好的位置是操作符之后,而不是在操作符之前,如下:highlight=0):if (width == 0 and height == 0 andcolor == ’red' and emphasis == ’strong’orhighlight 〉 100):raise ValueError("sorry, you lose")if width == 0 and height == 0 and (color == ’red’ oremphasis is None):raise ValueError(”values are %s,%s" %(width, height))Blob.__init__(self, width, height,color, emphasis, highlight)1.4 空行●T op level函数和类的定义的时候,空两行。
Python-开发规范-遵循PEP8规范
Python-开发规范-遵循PEP8规范Python中空⽩
1. 4个空格表⽰缩进,⽤4个空格代替⼀个TAB
2. 不再逗号、分号、冒号前加空格,应该在其后加空格
3. 关系运⾏符、数学运算符、逻辑运算符、赋值运算符前后都加⼀个空格
4. [] {} () 符号左右两边边界符号与元素之间都不要加空格
5. 逻辑不相⼲代码之间空⼀⾏,其他尽量少空⾏
6. 每⾏代码不超过80个字符,每个逻辑20⾏左右代码
7. 代码⽂件最后需要空⼀⾏
版本声明
1. #!/usr/bin/python3 声明python版本为3
2. #!/usr/bin/python2 声明python版本为2
包导⼊
1. import ⼀⾏只能导⼊⼀个包
2. 导⼊区分3个区域,按标准、第三⽅、⾃⼰编写,区域之间空⼀⾏其他不空⾏
注释
1. 更新代码的同时⼀定更新注释
2. 注释⼀定要描叙准确和精准
3. 注释符号 # 后⾯有⼀个空格
4. 避免⽆效注释
命名
1. 变量和函数名命名遵守C语⾔命名规范,不可是内置函数名和保留关键字
2. 通过下划线来区分单词,遵循Python语⾔风格
3. 类名⾸字母⼤写,以单词⾸字母⼤写区分
4. 模块名⼩写,可以使⽤下划线
5. 包名尽量短,⼩写,不可以使⽤下划线。
PEP8代码规范中文版
Introduction 介绍本文提供的Python代码编码规范基于Python主要发行版本的标准库。
Pyt hon的C语言实现的C代码规范请查看相应的PEP指南。
这篇文档以及PEP 257(文档字符串的规范)改编自Guido原始的《Pyth on Style Guide》一文,同时添加了一些来自Barry的风格指南。
这篇规范指南随着时间的推移而逐渐演变,随着语言本身的变化,过去的约定也被淘汰了。
许多项目有自己的编码规范,在出现规范冲突时,项目自身的规范优先。
A Foolish Consistency is the Hobgobli n of Little Minds 尽信书,则不如无书Guido的一条重要的见解是代码阅读比写更加频繁。
这里提供的指导原则主要用于提升代码的可读性,使得在大量的Python代码中保持一致。
就像PEP 20提到的,“Readability counts”。
这是一份关于一致性的风格指南。
这份风格指南的风格一致性是非常重要的。
更重要的是项目的风格一致性。
在一个模块或函数的风格一致性是最重要的。
然而,应该知道什么时候应该不一致,有时候编码规范的建议并不适用。
当存在模棱两可的情况时,使用自己的判断。
看看其他的示例再决定哪一种是最好的,不要羞于发问。
特别是不要为了遵守PEP约定而破坏兼容性!几个很好的理由去忽略特定的规则:1. 当遵循这份指南之后代码的可读性变差,甚至是遵循PEP规范的人也觉得可读性差。
2. 与周围的代码保持一致(也可能出于历史原因),尽管这也是清理他人混乱(真正的Xtreme Programming风格)的一个机会。
3. 有问题的代码出现在发现编码规范之前,而且也没有充足的理由去修改他们。
4. 当代码需要兼容不支持编码规范建议的老版本Python。
Code lay-out 代码布局Indentation 缩进每一级缩进使用4个空格。
续行应该与其包裹元素对齐,要么使用圆括号、方括号和花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐。
PEP8Python编码规范.doc
PEP8Python编码规范.docPEP8 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 : None4.2行注释,在一句代码后加注释。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 的方式。