PythonPEP8标准
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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):
pass
def hello(self):
pass
def main():
pass
4.import语句
1. import 语句应当分⾏书写
2. import语句应当使⽤absolute import
3. import语句应当放在⽂件头部,置于模块说明及docstring之后,全局变量之前
4. import语句应该按照顺序排列,每组之间⽤⼀个空格分隔,按照内置模块,第三⽅模块,⾃⼰所写的模块调⽤顺序,同时每组内部按照
字母表顺序排列
#Right
import os
import sys
from subprocess import Popen, PIPE
from foo.bar import Bar
#False
import os, sys
from ..bar import Bar
5.空格
在⼆元运算符两边各空⼀格:[=, - ,+ =, > , in , is ,not , and]
i = i + 1
x = x * x + 2
c = (a + b) * (a - b)
函数的参数列表中,","之后要有空格,默认值等号两边不要添加空格,左括号之后,右括号之前不要有空格
def complex(real, image=0):
pass
6.换⾏
python⽀持括号内的换⾏,这时有两种情况:
1.第⼆⾏缩进到括号的起始处
2.第⼆⾏缩进四个空格,适⽤于起始括号就换⾏的情形
a = list(var1, var2,
var3)
a=list(
var1,
var2,
var3)
7.注释
#号后需空⼀格,不要使⽤⽆意义的注释
x = x + 1 # 边框加粗⼀个像素
8.docstring
1.所有公共模块,函数,类,⽅法都应该有docstring。
9.命名规范
应避免使⽤⼩写字母l,⼤写字母O或I单独作为⼀个变量,以区分数字1和0.
包和模块使⽤全⼩写命名,,尽量不要使⽤下划线
类名使⽤CamelClass命名风格,内部类可⽤⼀个下划线开头
函数使⽤下划线分隔的⼩写命名
常量使⽤以下划线分隔的⼤写命名
MAX_OVERFLOW = 100
class FooBar:
def foo_bar():
pass
单字符命名应该尽量避免,除了计数器和迭代器
模块名尽量⼩写命名,⾸字母⼩写,尽量不要使⽤下划线(除⾮多个单词且数量不多的情况)类名:⾸字母⼤写,私有类可以⽤⼀个下划线开头
将相关的类和顶级函数放在同⼀个模块中,没必要限制⼀个类⼀个模块
函数名:⼀律⼩写,如有多个单词⼀律⽤下划线隔开
私有函数在函数名前加⼀个下划线
变量名尽量⼩写,如有多个单词,⽤下划线隔开
常量采⽤全⼤写,如有多个单词,使⽤下划线隔开
#False
s = "Hello World"
l = 1
import Decoder
#True
class Farm():
class Animal():
class _PrivateFarm():
def run():
count = 0
school_name = "xidian"
MAX_CLIENT = 100
10.程序设计规范
1.尽量不要直接将代码写在模块顶层,在执⾏主程序之前总是检查:if __name__ = '__main__',这样模块被导⼊主程序时就不会被执⾏了#wrong
do_something()
#right
def main():
do_something():
if__name__ == '__main__':
main()
所有的顶层代码在模块导⼊时都会被执⾏,要⼩⼼不要去调⽤函数,创建对象,或者执⾏哪些不该被执⾏的操作
尽量不要⽤+号拼接字符串,使⽤join函数拼接
在不复杂的情况下,尽量多⽤列表⽣成式,可以是代码更清晰
尽量使⽤map和filter等内置函数⽽不是⾃⼰去写循环
正则表达式之前⼀律加r,正则表达式使⽤之前⼀律编译好。