Python 风格规范
cal change 2.0 rep search instance height arr
分号
不要在行尾加分号, 也不要用分号将两条命令放在同一行.
行长度
每行不超过80 个字符
例外: 如果使用Python 2.4 或更早的版本, 导入模块的行可能多于80 个字符.
Python 会将圆括号, 中括号和花括号中的行隐式的连接起来, 你可以利用这个特点. 如
果需要, 你可以在表达式外围增加一对额外的圆括号.
Yes: foo_bar(self, width, height, color=‘black‘, design=None, x=‘foo‘,
emphasis=None, highlight=0)
if (width == 0 and height == 0 and
color == ‘red‘ and emphasis == ‘strong‘):
如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:
x = (‘This will build a very long long ‘
‘long long long long long long string‘)
注意上面例子中的元素缩进; 你可以在本文的 缩进 部分找到解释.
括号
宁缺毋滥的使用括号
除非是用于实现行连接, 否则不要在返回语句或条件语句中使用括号. 不过在元组两边使用
括号是可以的.
Yes: if foo:
bar()
while x:
x = bar()
if x and y:
bar()
if not x:
bar()
return foo
for (x, y) in dict.items(): ...
No: if (x):
bar()
if not(x):
bar()
return (foo)
缩进
用 4 个空格来缩进代码
绝对不要用tab, 也不要tab 和空格混用. 对于行连接的情况, 你应该要么垂直对齐换行的
元素(见 行长度 部分的示例), 或者使用4 空格的悬挂式缩进(这时第一行不应该有参数):
Yes: # Aligned with opening delimiter
foo = long_function_name(var_one, var_two,
var_three, var_four)
# 4-space hanging indent; nothing on first line
foo = long_function_name(
var_one, var_two, var_three,
var_four)
No: # Stuff on first line forbidden
foo = long_function_name(var_one, var_two,
var_three, var_four)
# 2-space hanging indent forbidden
foo = long_function_name(
var_one, var_two, var_three,
var_four)
空行
顶级定义之间空两行, 方法定义之间空一行
顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该
空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行.
空格
按照标准的排版规范来使用标点两边的空格
1. 括号内不要有空格.
Yes: spam(ham[1], {eggs: 2}, [])
No: spam( ham[ 1 ], { eggs: 2 }, [ ] )
2. 不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加(除了在行尾).
Yes: if x == 4:
print x, y
x, y = y, x
No: if x == 4 :
print x , y
x , y = y , x
3. 参数列表, 索引或切片的左括号前不应加空格.
Yes: spam(1)
Yes: spam (1)
Yes: dict[‘key‘] = list[index]
No: dict [‘key‘] = list [index]
4. 在二元操作符两边都加上一个空格, 比如赋值(=), 比较(==, <, >, !=, <>, <=, >=, in, not
in, is, is not), 布尔(and, or, not). 至于算术操作符两边的空格该如何使用, 需要你自己
好好判断. 不过两侧务必要保持一致.
Yes: x == 1
No: x<1
5. 当’=’用于指示关键字参数或默认参数值时, 不要在其两侧使用空格.
Yes: def complex(real, imag=0.0): return magic(r=real, i=imag)
No: def complex(real, imag = 0.0): return magic(r = real, i = imag)
6. 不要用空格来垂直对齐多行间的标记, 因为这会成为维护的负担(适用于:, #, =等):
Yes:
foo = 1000 # comment
long_name = 2 # comment that should not be aligned
dictionary = {
"foo": 1,
"long_name": 2,
}
No:
foo = 1000 # comment
long_name = 2 # comment that should not be aligned
dictionary = {
"foo" : 1,
"long_name": 2,
}
Python 解释器
每个模块都应该以#!/usr/bin/env python开头
模块应该以一个构造行开始, 以指定执行这个程序用到的Python 解释器:
#!/usr/bin/env python2.4
总是使用最特化的版本, 例如, 使用/usr/bin/python2.4, 而不是 /usr/bin/python2. 这样,
当升级到不同的Python 版本时, 能轻松找到依赖关系, 同时也避免了使用时的迷惑. 例如,
/usr/bin/python2 是表示/usr/bin/python2.0.1 还是/usr/bin/python2.3.0?
注释
确保对模块, 函数, 方法和行内注释使用正确的风格
文档字符串
Python 有一种独一无二的的注释方式: 使用文档字符串. 文档字符串是包, 模块, 类或函数
里的第一个语句. 这些字符串可以通过对象的__doc__成员被自动提取, 并且被pydoc 所
用. (你可以在你的模块上运行pydoc 试一把, 看看它长什么样). 我们对文档字符串的惯例
是使用三重双引号. 一个文档字符串应该这样组织: 首先是一行以句号, 问号或惊叹号结尾
的概述. 接着是一个空行. 接着是文档字符串剩下的部分, 它应该与文档字符串的第一行的
第一个引号对齐. 下面有更多文档字符串的格式化规范.
模块
每个文件应该包含下列项, 依次是:
来源: http://www.bubuko.com/infodetail-2308786.html