effective python -- 遵循PEP8规范

以前翻译过的几章, 后来发现已经有人翻译过了, 就停了
想想还是放上来吧


第二条: 遵循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规范
  • 共享的代码规范, 让社区合作变得更简单
  • 良好的代码规范, 有利于你以后重构代码

你可能感兴趣的:(effective python -- 遵循PEP8规范)