python代码风格

Jan 8, 2016
1 min read

代码建议统一使用pep8规范加上部分最佳实践。

风格指南是关于一致性的。风格一致对一个项目更重要。

Guido 的主要洞察力 (key insights) 之一是:代码更多是用来读而不是写。

故本指南致力于改善 Python 代码的可读性、使不同的 (wide spectrum) Python 代码 保持一致性。

python code comment style

pep8规范

代码pep8规范可以使用python pep8工具做检查.

安装方法 pip install pep8

使用方法 pep8 <python文件>

一般IDE工具都会有集成,可以在编写代码的工程中做pep8校验. 可自行google设置方法。

代码布局

  1. 每级缩进用 4 个空格。

  2. 建议使用4个空格代替tab,最流行的 Python 缩进方式是仅使用空格

  3. 绝不要混合使用 tab 和空格。建议打开IDE中的tab和空格(或至少显示行尾空格)显示。

  4. 限制所有行的最大行宽为 79 字符。

    折叠长行的首选方法是使用 Python 支持的圆括号、方括号 (brackets) 和花括号 (braces) 内的行延续。

    如果需要,你可以在表达式周围增加一对额外的圆括号,但是 有时使用反斜杠看起来更好。确认恰当地缩进了延续的行.

  5. 用两行空行分割顶层函数和类的定义。 类内方法的定义用单个空行分割。

    在函数中使用空行时,请谨慎的用于表示一个逻辑段落 (logical sections)。

  6. python文件应统一使用utf8编码,并建议在文件头加生utf8声明。 申明头如下

## 格式一
# -*- coding: utf-8 -*-
## 格式二
#!/usr/bin/env python
# encoding: utf-8

导入import

  1. 模块应在单行导入,模块内属性可以一行导入。

  2. Imports 通常被放置在文件的顶部,仅在模块注释和文档字符串之后,在模块的全局变量和常量之前。

  3. mports应该按照如下顺序成组安放, 你应该在每组导入之间放置一个空行。

    1. 标准库的导入
    2. 相关的第三方包的导入
    3. 本地应用/库的特定导入
  4. 对于内部包的导入是非常不推荐使用相对导入的。对所有导入总是使用包的absolute improt.

    具体可以参见pep328.

空格处理

空格问题大多可以通过pgp8工具检测出来,只要时间操作几次基本就能养出习惯。

宠物的烦恼 (Pet Peeves) (注:即无伤大雅的小问题)

  1. 避免在下述情形中使用无关的空格.

    1. 紧挨着圆括号、方括号和花括号
    2. 紧贴在逗号、分号或冒号前
  2. 始终在这些二元运算符两边放置一个空格

  3. 在数学运算符两边使用空格

  4. 不要在用于指定关键字参数 (keyword argument) 或默认参数值的 ‘=’ 号周围使用

  5. 复合语句 (Compound statements) (多条语句写在同一行) 一般不推荐。

注释

同代码不一致的注释比没注释更差。当代码修改时,始终优先更新注释!注释应该是完整的句子。

  1. 节俭使用行内注释。一个行内注释是和语句在同一行的注释。

    行内注释应该至少用两个空格和语句分开。 它们应该以一个 ‘#’ 和单个空格开始

  2. 为所有公共模块、函数、类和方法书写文档字符串。

    文档字符串对非公开的方法不是必要的,但你应该有一条注释来描述这个方法做什么;

    这条注释应该出现在 “def” 行之后

命名风格

命名风格是为了保持代码的可读性.

  1. 模块名应该是简短的、全部小写的名字。可以在模块名中使用下划线以提高可读性。

    Python包名也应该是简短的、全部小写的名字,尽管不推荐使用下划线。

  2. 类名使用首字母大写单词串 (CapWords) 的约定.

    内部使用的类使用一个额外的前导下划线

  3. 异常名同类命名约定。然而,你应该对异常名添加后缀 Error/Exception .

  4. 函数名应该为小写,必要时可用下划线分隔单词以增加可读性

  5. 对实例的方法,总是用 ‘self’ 做第一个参数。 对类的方法,总是用 ‘cls’ 做第一个参数。

  6. 方法名和实例变量 (Method Names and Instance Variables)

    采用函数命名规则:小写单词,必要时可用下划线分隔单词以增加可读性

  7. 对 non-public方法和实例变量采用一个前导下划线

最佳实践

内容源自: Hitchhiker's Guide <https://www.python-guide.readthedocs.org/en/latest/writing/style/>_.

这里内容比较散乱,不太好整理.内容也不是必须要求,可以自行尝试实践。