以前翻译过<effective python>的几章, 后来发现已经有人翻译过了, 就停了
想想还是放上来吧
第二条: 遵循PEP8规范
Python Enhancement Proposal #8, 简称PEP8, 是Python的代码规范. 只要符合语法, 你可以用任何你喜欢的格式来个写代码. 但是符合代码规范的代码, 会更受欢迎,更容易让人读懂. 甚至这些代码只是你一个人用, 符合规范也会让你以后修改重构代码的时候变得容易一点
PEP 8 会让你的代码变得清晰简单. 它还在随着Python的演化持续更新. 通读一下整个在线文档是非常有价值的事情 http://www.python.org/dev/peps/pep-0008/
下面几点是你必须要遵循的:
空白(Whitespace)
Python中, 空白是语法规范. Python程序员特别在意代码中的空白, 从而使代码更清晰明了
- 缩进用空格(space), 而不是tab
- 使用4个空格作为每一层的语法缩进
- 每一行不得超过79个字符
译者: 这一条还是很有必要的, 特别是多团队合作开发, 方便使用不同尺寸的屏幕来阅读代码
- 一行写不下, 需要第二行的时候, 在原有语法缩进的基础上, 在增加4个空格(4 space)
- 在文件中, function和class 需空开2行
- 在class中, method需空开1行
- 在列表索引, 方法调用, 关键字前后, 不要有空格
- 参数赋值前后有 一个且只有一个空格
命名
PEP 8 建议要统一命名规范. 这样使得阅读代码时能清晰的区分类型
- 方法(function), 变量(variables), 属性(attributes)应该是小写加下划线, 例如: lowercase_underscore
- 私有属性应该以__开头, 并小写, 例如: __double_leading_underscore
- 类(class)和异常(exception) 应该首字母大写, 例如 CapitalizedWord
- 模块内的常亮应该是大写加下划线, 例如 *ALL_CAPS
- 实例方法使用self作为第一个参数名
- 类方法使用cls作为第一个参数名
表达式和声明
Python之禅(Zen of Python)中说过:”应该 有且最好只有一种方式去实现它”. PEP 8 尝试使用这个理念来指导表达式和声明
- 使用内联否定(if a is not b)来代替否定表达式(if not a is b)
- 不要用于len来检查列表或字符串的空值(if len(somelist) == 0), 使用 if not somelist. 同时假定,空值隐式的为False
- 接上, 非空的字符串或者列表字典隐式为True
- 避免使用单行的if, for, while, except 等复合声明. 切分为多行, 更清晰易读
- 总是将import置于文件头部
- 总是使用绝对引用, 而不是相对路径引用. 例如, 引用 foo模块的bar, 你应该from foo import bar, 而不是import foo
- 如果必须相对引用, 使用明确的语法from . import foo
- import之间有必须遵循如下排序: 标准类库模块, 第三方模块, 你自己的模块. 每个import章节应该是alpha排序(译者: 也就是按照a,b,c,d排序)
Pylint (http://www.pylint.org/) 是比较热门的Python静态代码检查工具. Pylint提供了PEP 8 的代码规范检查,以及一些常见Python错误的检查
要记住的事
- 编码时遵循PEP 8规范
- 共享的代码规范, 让社区合作变得更简单
- 良好的代码规范, 有利于你以后重构代码