python代码风格建议

python 以其结构严格著称,同时也以其命名规范散漫出名,算乱无规矩的命名尤其给开发人员带来理解上的误区。

尤其像python、ruby动态语言,由于在运行期随时可能出现方法或者属性的增减,规则的命名尤其重要。


ruby语言本身定义的语法规则较为随意,但却不乏一一对应的隐含规则,使人一目了然。其命名规则甚至渗透进了语言本身的规范当中

在命名规则这一点上python显得没规没距。需要逐步养成一个好的编码命名规范。


本文从各大站点文章中搜集了一些代码风格,命名规范。便于学习参考。



代码风格:




1. 使用空格来表示缩进,而不要使用制表符tab,请勿将两者混用
2. 函数间换行至少一行
3. 类之间换行至少两行
4. dict、list、tuple、参数列表时,应该在逗号,前添加一个空格
5. dict中key之后的冒号:应在value与冒号:之间添加空格,而不是:与key之前间
6. 较长代码(大于79chars)使用反斜杠\换行。换行后新行的起始处应该与前一个分隔符对齐(是参数换行则与左括号(对齐
7. import位于module comments 与 docstring 之后,常量声明之前
8. 3.0一下版本的代码文件建议以latin字符编码。3.0以上则推荐utf-8
9. 代码中有操作符运算,请注意优先级,优先的操作紧缩,或者加括号
10. 等号左右两边请勿加空格
11. 尽量不要将多行代码放在同一行
12. 少使用inline comments(行后注释)
13. block comments (用#开头的多行函数注释),保持与目标函数 相同的缩进
14. docstring ,开头一行写上返回值,接下来一行写函数功能描述,后可按照格式>>>func(arg1, arg2, arg3) /r 返回值。以便于测试
15. 另外,若要使用subversion,cvs等源代码管理工具。可以在函数的docstring 之后,code之前 写上

1. version = “Revision:16dd63848921


命名规则:



1. 尽量少用 ‘l’ (lowercase letter el), ‘O’ (uppercase letter oh), or ‘I’ (uppercase letter eye) 单字母作为变量的命名.——-no l,I,O
2. 包和模块应该用短且全小写字母(Modules should have short, all-lowercase names.):thismoduleisnew
3. class name 则建议用CapWords(首字母大写)的形式命名:NewClassName
4. Exception类则用以Error结尾的字符串命名为宜: NewError
5. 全局变量尽量只是设计用于模块内使用,并且可以用import *时,包内的all机制来除去全局变量
6. 函数名(function name) 尽量都用小写且单词间以_(下划线)连接,另外,大小混合的mixedCase植被允许用于传统类中。function_name(arg1…)
7. 函数和方法参数(function and method arguments),self作为实例方法的第一个参数,cls作为类方法的第一个参数,倘若参数名与关键字相同,为了避讳,则应该加个下划线
8. 方法名&类实例的属性(method name & instance variable)方法名规则与函数名相同,类实例私有属性 和 类实例的私有方法以单个下划线开头_private_fucntionname(self)
9. 常量;全大写,单词间以
下弧线间隔:THIS_IS_CONSTANT_VAR
10. 面向对象设计建议:

1. 若对类实例中的属性是设置成public的好还是private好,可以考虑先设置成private,其修改成本更低。
2. private不能被第三方使用,因为随时有可能被删除、废弃
3. public属性不能用下划线开头
4. 避免属性使用大运算量操作
5. 倘若不想被子类继承的属性,应该用双下划线开头,且最后没有下划线。这样会启动python的命名识别矫正处理算法,保证不被继承





1. joined_lower 可以是函数名 方法名 属性名
2. ALL_CAPS 是常量
3. StudlyCaps是类名
4. camelCase 只有在预先订制好的命名规范中使用
5. 属性 interface,_internal, private
6. 尽量避免
private形式,下面两个连接解释了为什么python中没有private声明








## 反斜杠替换

如果一个语句必须占用多行,那么也可以在前一行的末尾添加反斜杠 () 以表明将在下一行继续输入该语句。请勿在反斜杠字符后面使用空格字符(具体来说就是制表符或空格)。例如:

text = “This is a test of a long lines” \
“ continuing lines here.”
print text
=> This is a test of a long lines continuing lines here.