代码建议统一使用pep8规范加上部分最佳实践。
风格指南是关于一致性的。风格一致对一个项目更重要。
Guido 的主要洞察力 (key insights) 之一是:代码更多是用来读而不是写。
故本指南致力于改善 Python 代码的可读性、使不同的 (wide spectrum) Python 代码 保持一致性。
pep8规范
代码pep8规范可以使用python pep8工具做检查.
安装方法 pip install pep8
使用方法 pep8 <python文件>
一般IDE工具都会有集成,可以在编写代码的工程中做pep8校验. 可自行google设置方法。
代码布局
-
每级缩进用 4 个空格。
-
建议使用4个空格代替tab,最流行的 Python 缩进方式是仅使用空格
-
绝不要混合使用 tab 和空格。建议打开IDE中的tab和空格(或至少显示行尾空格)显示。
-
限制所有行的最大行宽为 79 字符。
折叠长行的首选方法是使用 Python 支持的圆括号、方括号 (brackets) 和花括号 (braces) 内的行延续。
如果需要,你可以在表达式周围增加一对额外的圆括号,但是 有时使用反斜杠看起来更好。确认恰当地缩进了延续的行.
-
用两行空行分割顶层函数和类的定义。 类内方法的定义用单个空行分割。
在函数中使用空行时,请谨慎的用于表示一个逻辑段落 (logical sections)。
-
python文件应统一使用utf8编码,并建议在文件头加生utf8声明。 申明头如下
## 格式一
# -*- coding: utf-8 -*-
## 格式二
#!/usr/bin/env python
# encoding: utf-8
导入import
-
模块应在单行导入,模块内属性可以一行导入。
-
Imports 通常被放置在文件的顶部,仅在模块注释和文档字符串之后,在模块的全局变量和常量之前。
-
mports应该按照如下顺序成组安放, 你应该在每组导入之间放置一个空行。
- 标准库的导入
- 相关的第三方包的导入
- 本地应用/库的特定导入
-
对于内部包的导入是非常不推荐使用相对导入的。对所有导入总是使用包的absolute improt.
具体可以参见pep328.
空格处理
空格问题大多可以通过pgp8工具检测出来,只要时间操作几次基本就能养出习惯。
宠物的烦恼 (Pet Peeves) (注:即无伤大雅的小问题)
-
避免在下述情形中使用无关的空格.
- 紧挨着圆括号、方括号和花括号
- 紧贴在逗号、分号或冒号前
-
始终在这些二元运算符两边放置一个空格
-
在数学运算符两边使用空格
-
不要在用于指定关键字参数 (keyword argument) 或默认参数值的 ‘=’ 号周围使用
-
复合语句 (Compound statements) (多条语句写在同一行) 一般不推荐。
注释
同代码不一致的注释比没注释更差。当代码修改时,始终优先更新注释!注释应该是完整的句子。
-
节俭使用行内注释。一个行内注释是和语句在同一行的注释。
行内注释应该至少用两个空格和语句分开。 它们应该以一个 ‘#’ 和单个空格开始
-
为所有公共模块、函数、类和方法书写文档字符串。
文档字符串对非公开的方法不是必要的,但你应该有一条注释来描述这个方法做什么;
这条注释应该出现在 “def” 行之后
命名风格
命名风格是为了保持代码的可读性.
-
模块名应该是简短的、全部小写的名字。可以在模块名中使用下划线以提高可读性。
Python包名也应该是简短的、全部小写的名字,尽管不推荐使用下划线。
-
类名使用首字母大写单词串 (CapWords) 的约定.
内部使用的类使用一个额外的前导下划线
-
异常名同类命名约定。然而,你应该对异常名添加后缀 Error/Exception .
-
函数名应该为小写,必要时可用下划线分隔单词以增加可读性
-
对实例的方法,总是用 ‘self’ 做第一个参数。 对类的方法,总是用 ‘cls’ 做第一个参数。
-
方法名和实例变量 (Method Names and Instance Variables)
采用函数命名规则:小写单词,必要时可用下划线分隔单词以增加可读性
-
对 non-public方法和实例变量采用一个前导下划线
最佳实践
内容源自: Hitchhiker's Guide <https://www.python-guide.readthedocs.org/en/latest/writing/style/>
_.
这里内容比较散乱,不太好整理.内容也不是必须要求,可以自行尝试实践。