Google Python Style Guide 是 Google 官方的 Python 编码规范,在 PEP 8 基础上进行扩展,用于统一 Python 代码的书写风格。
用途 该指南用于规范 Python 代码的编写与审查,可作为团队编码标准,也可用于配置 lint 工具规则和帮助新成员快速了解项目约定。
主要能力与规则要点
- 以 PEP 8 为基线,Google 指南在其之上扩展。
- 所有公开函数和方法使用类型注解。
- 使用 4 空格缩进,不使用制表符。
- 最大行长度为 80 个字符。
- 所有公开模块、函数、类和方法必须编写文档字符串。
- 优先使用推导式而非 map()/filter()。
- 使用 f-string 进行字符串格式化(Python 3.6+)。
命名约定
- 模块:snake_case,例如 user_service.py
- 类:UpperCamelCase,例如 UserService
- 函数/方法:snake_case,例如 get_user_by_id
- 变量:snake_case,例如 user_count
- 常量:UPPER_SNAKE_CASE,例如 MAX_RETRIES
- 受保护成员:单下划线前缀,例如 _internal
- 私有成员:双下划线前缀,例如 __private
类型注解 公开函数应标注参数与返回类型,例如 def get_user(user_id: int) -> Optional[dict];缺少类型注解被视为不正确。
文档字符串(Google 风格) 文档字符串应包含 Args、Returns、Raises 等段落,说明参数、返回值与可能抛出的异常。
导入 导入顺序为:标准库、第三方库、本地模块,各组之间空行分隔;每行一个导入,禁止通配符导入(如 from os.path import *)。
字符串格式化 使用 f-string,例如 f"Hello, {name}!";避免使用字符串拼接或 % 格式化。
推导式 使用列表/字典推导式,例如 [x ** 2 for x in range(10)]、{user.id: user for user in users};避免用 map()/filter() 配合 lambda。
异常处理 捕获具体异常,例如 except json.JSONDecodeError as e,并使用 raise ... from e 保留原因;禁止裸 except 和静默 pass。
默认参数 禁止使用可变默认参数(如 items: List[str] = []),应使用 None 作为默认值并在函数体内初始化。
常见错误对照
- 可变默认参数 → 使用 None 作为默认值
- 通配符导入 → 仅显式导入
- 裸 except → 捕获具体异常
- % 或 .format() 字符串 → 使用 f-string
- map()/filter() → 使用推导式
- 缺少文档字符串 → 添加 Google 风格文档字符串
- 缺少类型注解 → 为公开函数添加注解
适用场景 编写新的 Python 代码、重构现有 Python 代码、代码评审、设置 lint 规则(pylint、flake8)、新团队成员上手。
安装 npx skills add testdino-hq/google-styleguides-skills/python
完整指南 完整细节、示例与边界情况参见 python.md。