month_names = ['Januari', 'Februari', 'Maart', # These are the
'April', 'Mei', 'Juni', # Dutch names
'Juli', 'Augustus', 'September', # for the months
'Oktober', 'November', 'December'] # of the year
隐式的行拼接可以带有注释。后续行的缩进不影响程序结构。后续行也允许为空白行。
"""
# We use a weighted dictionary search to find out where i is in
# the array. We extrapolate position based on the largest num
# in the array and the array size and then do binary search to
# get the exact number.
if i & (i-1) == 0: # true if i is a power of 2
文档注释:
要为所有的公共模块,函数,类和方法编写文档说明
非公共的方法没有必要,但是应该有一个描述方法具体作用的注释。这个注释应该在def那一行之后
多行文档注释使用的结尾三引号应该是自成一行
class SampleClass(object):
"""Summary of class here.
Longer class information....
Longer class information....
Attributes:
likes_spam: A boolean indicating if we like SPAM or not.
eggs: An integer count of the eggs we have laid.
"""
在二元运算符两边各空一格,比如赋值(=)、比较(==, <, >, !=, <>, <=, >=, in, not in, is, is not), 布尔(and, or, not),算术操作符两边的空格可灵活使用,但两侧务必要保持一致
不要在逗号、分号、冒号前面加空格,但应该在它们后面加(除非在行尾)
函数的参数列表中,逗号之后要有空格
函数的参数列表中,默认值等号两边不要添加空格
左括号之后,右括号之前不要加添加空格
参数列表, 索引或切片的左括号前不应加空格
当'='用于指示关键字参数或默认参数值时,不要在其两侧使用空格
正确示例代码:
Tim('Why are you hiding your eyes?')
Bob("I'm scared of lint errors.")
Juy('"Good!" thought a happy Python reviewer.')
当且仅当代码中使用单引号'来引用字符串时,才可能会使用三重'''为非文档字符串的多行字符串来标识引用
文档字符串必须使用三重双引号"""
10 模块导入规则
导入应该放在文件顶部,位于模块注释和文档字符串之后,模块全局变量和常量之前。
导入应该按照从最通用到最不通用的顺序分组:标准库导入、第三方库导入、应用程序指定导入,分组之间空一行。
模块名称要短,使用小写,并避免使用特殊符号, 比如点和问号。
尽量保持模块名简单,以无需分开单词最佳(不推荐在两个单词之间使用下划线)。
每个导入应该独占一行。
正确使用例子:
import os
import numpy
import sys
from types import StringType, ListType
错误使用例子:
import os, numpy, sys
从一个包含类的模块中导入类时,通常可以写成这样:
from MyClass import MyClass
from foo.bar.YourClass import YourClass
模块导入建议
示例 评价
from modu import * 差, 不清楚具体从模块中导入了哪些内容
from modu import sqrt 稍好
import modu
import modu.sqrt
最佳 , 调用的时候直接使用modu.sqrt能比较清楚的知道当前方法属于哪个模块
import os
import sys
推荐
import os, sys
不推荐
from subprocess import Popen, PIPE 推荐
11 Main
主功能应该放在一个main()函数中。
在Python中,pydoc以及单元测试要求模块必须是可导入的。代码应该在执行主程序前总是检查 if __name__ == '__main__', 这样当模块被导入时主程序就不会被执行。