首页/开发/代码质量与评审速查/PEP 8:Python 风格基线
规范与静态检查65 条

PEP 8:Python 风格基线

Python 官方风格指南:4 空格缩进、行宽上限 79 字符(注释与文档 72)、snake_case 函数变量名、CamelCase 类名等基础约定。

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
类CamelCaseUserProfile
函数与变量snake_casefetch_name
常量全大写下划线分隔MAX_RETRIES
内部使用单下划线前缀_helper
PEP 8 是基线:现代团队让 Black 或 Ruff 落地格式,人只需关注命名与结构这类工具管不到的部分。
项目一致性优先:既有代码库若采用不同约定,跟随项目现状比机械套用条款更重要。
行宽这类纯格式条款可以由工具配置覆盖,但命名、导入结构这类影响可读性的条款仍需人工遵守。

易错点

  • 团队未协商就死守 79 字符:与 Black 默认的 88 冲突,格式化工具互相打架。
  • 只背条款不上工具:评审时把注意力耗在格式细节上,还容易遗漏。
  • 把 PEP 8 当门禁:风格不合规就阻塞合并,真实缺陷反而没人看。
  • 项目内混用制表符与空格:不同编辑器下缩进显示不一致,代码结构被误读。

数据来源与参考

  • PEP 8 - Style Guide for Python Code(python.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌