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

备注(提示):版权归原作者所有,如侵犯您的版权,请邮件联系我,我将会收到通知后,尽快删除! 

posted @ 2015-05-30 19:45  reanote  阅读(486)  评论(0编辑  收藏  举报