英文教程:https://legacy.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds
中文教程:https://blog.csdn.net/ratsniper/article/details/78954852
代码编排
1、缩进4个空格,禁止空格与Tab混用
2、行长79,防止单行的逻辑过于复杂
if 1:
pass
命名
1、除非在lamdba函数中,否则不要使用单字母的变量名,但是即使在lamdba函数中变量名也要尽可能有意义
2、包名、模块名、函数名全部使用小写,单词使用下划线链接
3、类名、异常名使用首字母大写的方法,异常名结尾加Error或者Warning
4、全局变量尽量使用大写,同一类型的全局变量要加同一的前缀,单词用下划线链接
5、自定义的变量、函数名等不要与标准库名冲突
6、函数名必须有动词,最好是do_something的句式或者somebody_do_something句式
COLOR_RED = 10
COLOR_BLUE = 11
f = lambda x: x+1
def func(x, y):
pass
def get_money():
pass
注释
1、忌讳没有注释和逐行注释
2、行内注释
当行逻辑过于复杂添加
3、块注释
一段逻辑开始时注释
4、引入外来算法或者配置时必须在注释中添加源链接,标明出处
5、函数和类尽量添加docstring
def do_eat(x, y):
print("------------")
空格
1、:,;后面要跟一个空格,前面没有空格,行尾分号无需空格
2、二元操作符前后各一个空格
数学运算符、比较运算符、逻辑运算符、位运算符
3、=的注意事项:用于指示关键字参数或默认参数值时,不要添加空格
a = 1
def f(x, y=1):
pass
换行
1、适当添加换行
2、函数间
1、顶级函数空间空2行
2、类的方法空1行
3、文件结尾留空一行
import
1、不要使用from xxx import *
2、导入顺序(标准库、第三方、自定义)
a、标准库
b、第三方库
c、自定义库
3、单行不要导入多个库
4、模块内用不到的不要去import
字符串拼接
1、拼接方法
a、字符串相加 (性能最差)
b、字符串格式化
c、python3.6支持f操作符
>>> a = 111
>>> b=222
>>> c=333
>>> s = f"{a}-{b}-{c}"
>>> s
'111-222-333'
d、join
2、尽量使用join方法,因为速度快,内存消耗小
语义
1、要求明确、直白
not x in y
x not in y
not x is y
x is not y
测试工具:
pep8:即将失效,用pycodestyle替换
pylint:更加严格,引入的包没有使用都可以检测出来
flake8: