Effective Python 条目二:遵循PEP8风格规约
Python 增强建议#8,也被称为PEP8,是格式化Python代码的风格指引。只要符合语法,你可以随心所欲地写Python代码。然而,一致的风格使你的代码更加亲和与易于理解,及在一个大型社区中与其他Python程序员分享时促进协作。但是即使只有你自己一个人读你的代码,遵循这个风格规约将会使得以后修改起来更加容易。
PEP8有一些列丰富的关于怎样去编写清晰干净的Python代码的细节。随着Python语言的演变,它将会持续更新。这是非常值得去阅读整个在线规约的(http://www.python.org/dev/peps/pep-0008)。这里有一些规约你应该确保去遵循的:
空格:在Python里,空格是显著的语法。在代码清晰度上,Python程序员对空格的作用是特别敏感的。
- 对于缩进,使用空格来替换Tab键;
- 每一个语法上的缩进级别使用4个空格;
- 行的长度应该是79个字符或者更少;
- 长的表达式在下一行的延续缩进应该比正常缩进级别的额外多4个空格;
- 在一个文件里,函数和类应该有两个空行分隔;
- 在类里面,方法应该被一个空行分隔;
- 不要再列表的索引,函数调用或者关键字参数赋值中添加空格;
- 在变量赋值的前后,有且只添加一个空格。
命名:PEP8建议在这种语言的不同部分使用独立的命名风格。这将使得在阅读代码的时候,更加容易区分每一个名字对应的类型。
- 函数,变量,和属性应该使用lowercase_underscore格式;
- 保护型的实例属性应该使用_leading_underscore格式;
- 私有的实例属性应该使用__double_leading_underscore格式;
- 类和异常应该使用CApitalizedWord格式;
- 模块级的常量应该使用ALL_CAPS格式;
- 类的实例方法应该使用self作为第一个参数的名字(它指向这个对象);
- 类方法应该使用cls作为第一个参数的名字(它指向这个类)。
表达式和声明:Python的哲学是:“应当只有一种——而且是最好的一种——明确的方式去做一件事。” 对于表达式和声明,PEP8在它的指引里尝试去修改这种风格。
- 用内联的否定(if a is not b)代替肯定表达式的否定(if not a is b);
- 不要通过检测长度(if len(somelist) == 0)来检测空值(比如[]或者‘’), 使用 if not somelist 来假设空值隐含评估是False;
- 一些不是空值( 比如[1] 或 ‘hi’)的东西,语句if somelist 是隐含是True对于非空值;
- 避免一行中包含if语句,for和while循环,和except复合语句,把它们分开在多行会更加清晰。
- 总是吧import语句放在文件的顶部;
- 当导入模块的时候总是使用模块的名字,不要依赖于当前模块所属的路径。比如:从bar包中导入foo模块,你应该使用:from bar import foo,不要仅仅是:import foo;
- 如果你必须相对的导入,请使用明确地语法:from . impor foo;
- 各部分中的导入应该遵循以下顺序:标准库模块,第三方库模块,你自己的模块。每一个字部分的导入应该按照字母排序。
NOTE:
Pylint 工具(http://www.pylint.org/) 是一个很流行的Python源码静态分析器,Pylint提供了在Python程序中对于PEP8风格规约和检查多种其它通用错误的类型的自动化检查。
想想和记下来
- 当写Python代码的时候,总是遵循PEP8风格规约;
- 在一个大的Pthon社区中与他们进行协作交流是采用一个通用的风格;
- 使用一致的风格使得你的代码在今后更容易修改。
转载注明出处
原文(英文):effective python, item 2
译文(中文):http://www.cnblogs.com/reanote/p/effective_python_item_2
备注(提示):版权归原作者所有,如侵犯您的版权,请邮件联系我,我将会收到通知后,尽快删除!