一.代码的编排
1缩进4个空格的缩进(编辑器都可以完成的功能),不使用TaP,更不能混合使用Tap和空格
2每行最大的长度为79,换行可以使用反斜杠,最好使用圆括号,换行点要在原操作符的后面敲回车。
3 类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。
二.编排文档
1 模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。其中import部分,又按标准、三方和自己编写顺序依次排放,之间空一行。
2 不要在一句import中多个库,比如import os, sys不推荐。
3.如果采用from XX import XX引用库,可以省略‘module.’,都是可能出现命名冲突,这时就要采用import XX。
三.空格的使用
总体原则,避免不必要的空格。
1 各种右括号前不要加空格。
2 逗号、冒号、分号前不要加空格。
3 函数的左括号前不要加空格。如Func(1)。
4 序列的左括号前不要加空格。如list[2]。
5 操作符左右各加一个空格,不要为了对齐增加空格。
6 函数默认参数使用的赋值符左右省略空格。
7 不要将多句语句写在同一行,尽管使用‘;’允许。
8 if/for/while语句中,即使执行语句只有一句,也必须另起一行。
四.注释
1总体的原则错误的注释不如没有注释。所以当一段代码发生变化时候第一件事情就是要修改注释!
2注释必须使用英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后面跟两个空格。
五.命名规则
1包和模块名应该简短,全部用小写字母,多字母之间可以用单下滑线连接
2类名遵循驼峰命名
3全局变量名应尽量只在模块内部使用, 对可能使用语句 from moduleName import variableName 而被导入的模块,应采用 __all__ 机制来防止全局变量被别的模块导入, 或者在全局变量名开头加一个前置下划线.
4函数名应该为全部小写的凹驼峰规则
5常量全部使用大写字母的凹驼峰规则来表示, 通常在模块顶格定义
6非公开方法和实例变量开头使用前置下划线
有时候可能会为了避免与子类命名冲突,采用两个前置下划线
需要注意的是: 若 class Foo 的属性名为 __a, 该属性是不能以 Foo.__a 的方式访问的(执著的用户还是可以通过Foo._Foo__a 来访问), 所以通常双前置下划线仅被用来避免与基类的属性发生命名冲突。