python之禅pep20
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
编码规范(pep8)
- 缩进
- 使用四个空格来进行缩进
- 换行的时候可以使用反斜杠,最好的方法是使用园括号,在使用反斜杠的时候,在反斜杠的后直接回车,不能有任何空格存在
- 关于tab的空格的选择,在python2中是可以混用的,但是在python3中,只能用一种风格。
行的最大长度
行的最大长度为79个字符
没有结构化限制的大块文本(文档字符或者注释),每行的最大字符数限制的72个空行
顶层l函数和类的定义的时候,空两行。
类中方法的定义空一行。-
注释
注释必须与代码符合,修改代码必须修改注释- 块注释
块注释通常适用于跟随它们某些(或者全部的)代码,并锁进到与代码相同的级别,块注释的每一行开头使用一个#和一个空格
块注释内部的段落通过只有一个#的空行分割 - 行内注释
有节制的使用行内注释
行内注释与代码语句同行的注释,行内注释和代码至少要有两个空格分割,以#和一个空格开始 - 文档注释格式要求
""" 整体描述模块作用 :param n: 参数 : 作用 :type n: 参数 : 参数类型 """ 使用__doc__ 可获取文档注释
- 块注释
-
命名
- 变量命名
永远不要使用字母i,‘O’,‘I’ 作为单字节变量名 - 函数名命名
函数名应该小写,如果想提高可读性可以用下划线分割 - 类命名
首字母大写
- 变量命名
字符串引号
单引号和双引号字符串是相同的,pep没有给出建议,选择一条规则并坚持使用下去
当一个字符串同时具有两个时,使用和最外层不同的符号来避免使用反斜杠,从而提高可读性-
导入
先导入python内置的包
导入第三方的模块和包
导入自定义的模块和包- 命名规范:
模块名称要短,使用小写,并避免使用特殊符号
模块名称简单明了,不推荐使用下划线
- 命名规范:
不推荐使用 from model import *
all 变量
如果全局变量中存在all ,那么通过from model import * 导入该模块时指定的方法和变量,没有则全部导入
常用于限制参数和模块的导入-
包
- 任意包含init.py 文件的目录被认为时一个包
- 导入时会首先执行init.py 文件
- 如果init.pys文件中存在all,那么通过from model import * 只会导入指定的模块,没有默认导入全部