PEP 8 是什么
PEP 8 是 Python 官方的代码风格指南,规定缩进、行宽、命名、导入与空白使用等基础约定。它的目的是让不同人写的 Python 代码看起来像同一个人写的,从而降低阅读成本。它给的是基线而不是法律条文:项目内部一致性优先于与 PEP 8 一致,能用工具落地的部分不必靠人背。
基本信息
| 缩进 | 4 个空格,不用制表符 |
|---|---|
| 行宽 | 代码 79 字符,注释与文档字符串 72 字符 |
| 命名 | 函数与变量 snake_case,类 CamelCase,常量 UPPER_CASE |
| 导入 | 每个导入单独一行,按标准库、第三方、本项目分组置于文件顶部 |
| 空行 | 顶层定义之间空两行,类内方法之间空一行 |
最常被引用的条款
- 缩进用 4 个空格;同一项目内不要混用制表符与空格。
- 行宽:代码 79 字符,注释与文档字符串 72 字符(现代工具常放宽到 88)。
- 运算符两侧留空格,函数参数默认值、切片与关键字参数两侧不加多余空格。
- 比较 None 用 is 与 is not,不要用等号。
- 多条语句写在同一行、行尾加分号都属于应当避免的写法。
- 命名避开易混字符(小写 l、大写 O、大写 I 作单字符变量)。
- 字符串引号在项目内保持一致,避免因为引号风格反复制造 diff 噪声。
要点示例
要点示例
MAX_RETRIES = 3 # 常量全大写
class UserProfile: # 类名用 CamelCase
def fetch_name(self): # 函数与变量用 snake_case
...
if name is None: # 与 None 比较用 is
return DEFAULT_NAME命名约定速查
| 对象 | 约定 | 示例 |
|---|---|---|
| 包与模块 | 全小写,尽量短 | utils |
| 类 | CamelCase | UserProfile |
| 函数与变量 | snake_case | fetch_name |
| 常量 | 全大写下划线分隔 | MAX_RETRIES |
| 内部使用 | 单下划线前缀 | _helper |
PEP 8 是基线:现代团队让 Black 或 Ruff 落地格式,人只需关注命名与结构这类工具管不到的部分。
项目一致性优先:既有代码库若采用不同约定,跟随项目现状比机械套用条款更重要。
行宽这类纯格式条款可以由工具配置覆盖,但命名、导入结构这类影响可读性的条款仍需人工遵守。