1、缩进
缩进级别使用4个空格
空格是首选的缩进方法
2、代码最大长度
Pycharm行限制为最多80个字符
3、空白行
空两行进行分割顶层函数和类定义
类中的方法定义之间空一行
函数中使用空行来节省逻辑部分
4、源文件编码
python2中使用UTF-8是需要编码声明
5、导入包 及导入库
导入多个库函数,分开依次导入,按以下顺序执行:
①标准库导入
②有关的第三方库导入
③本地应用以及特定库导入
从类的模块中导入另一个类时候:
from settings import Settings
from botton import Botton
6、表达式和语句中的空格
a)括号、大括号内
Yes: spam(ham[1], {eggs: 2})
No: spam( ham[ 1 ], { eggs: 2 } )
b)在尾随逗号和后面的右括号之间
Yes: foo = (0,)
No: bar = (0, )
c) 在逗号,分号或冒号前面
Yes: if x == 4: print x, y; x, y = y, x
No: if x == 4 : print x , y ; x , y = y , x
d)紧接在开始函数调用的参数列表的开括号之前
Yes: spam(1)
No: spam (1)
e) 紧接在开始括号之前,开始索引或切片
Yes: dct['key'] = lst[index]
No: dct ['key'] = lst [index]
f)在一个赋值(或其他)运算符周围有多于一个的空间来对齐它
Yes:x = 1 y = 2 long_variable = 3
No:x = 1 y = 2 long_variable = 3
7、注释
块注释的每一行都以#和一个空格开始。
行注释应该与语句至少隔开两个空格,用#和一个空格开始
8、命名约定
采用描述性命名
类命名采用驼峰命名法
总体原则:
a)尽量单独使用 l o O等容易混淆的字母
b)模块名尽量短小,采用小写,可以使用下划线
c)包命名尽量短小,采用小写,不可以使用下划线
d)全局变量只在模块内有效
e)函数命名使用全小写方式,可以用下划线
f)常量名使用全部大写的方式,可以使用下划线
g)类的方法第一个参数是slef,静态方法第一个参数是cls
9、编码建议
优先考虑实现效率
a)比如运算符 ‘+’ 在CPython中效率很高
b)尽可能使用 ‘is’,‘is not’ 取代‘==’ , 比如‘if x is not None’优先于’if x‘
c)尽可能多的使用基于类的捕获异常,每个模块和包都有自己的异常类,异常类继承自Exception
d)异常不要使用裸露的expect,通常后面要跟具体的exceptions
e)try代码尽可能少
try:
value = collection[key]
except KeyError:
return key_not_found(key)
else:
return handle_value(value)
f) 使用startswith()和endswith()代替切片进行序列前缀或后缀的检查。比如
Yes: if foo.startswith(‘bar’)
:优于
No: if foo[:3] == ‘bar’:
g)使用isinstance()比较对象的类型,判断数据类型。比如
Yes: if isinstance(obj, int)
: 优于
No: if type(obj) is type(1):
h)判断序列是否为空,如下规则: 多用这样的处理方式
Yes: if not seq:
if seq:
优于
No: if len(seq) if not len(seq)