核心要点
知道 PEP 8 是官方风格指南
能说出几条核心规则(缩进、命名、行宽)
了解 black/ruff/flake8 等自动化工具
标准回答
PEP 8(PEP 8 -- Style Guide)是 Python 社区公认的代码风格规范,非语法强制,但团队与开源项目普遍遵循。
核心规则:
- 缩进:4 空格,不用 Tab
- 行宽:79 字符(black 默认 88)
- 命名:函数/变量
snake_case,类CapWords,常量UPPER_CASE - 空行:类/函数间 2 行,方法间 1 行
- 导入:标准库 → 第三方 → 本地,各组空行分隔
重要性:
- 降低代码审查摩擦
- 新人快速融入代码库
- 工具可自动检查/格式化
工具链:black(格式化)、ruff/flake8(lint)、isort(导入排序)。CI 中集成可强制执行。
常见误区
⚠️ 常见踩坑
把 PEP 8 当成语法强制要求——它只是风格指南,违反不会报错,只是 linter 会警告。还有人机械套用「行宽 79」「与现有不一致也要改」,但 PEP 8 自己强调一致性优先、可适度破例(black 默认 88 字符就是务实之选)。把 PEP 8(风格)和 PEP 484(类型提示)混为一谈也是常见口误。
追问
追问 1:PEP 和 RFC 有什么区别?
PEP(Python Enhancement Proposal)是 Python 官方提案流程,涵盖语言特性(PEP 484 类型提示)和流程/风格(PEP 8)。通过社区讨论和 BDFL/核心开发者决策采纳。
追问 2:何时可以违反 PEP 8?
与现有代码风格一致(Consistency)、避免破坏可读性的极端换行、与 C 扩展接口对齐等。PEP 8 自身说:「A foolish consistency is the hobgoblin of little minds」——明智地破例。
追问 3:black 和 autopep8 有何不同?
autopep8 只做「最小修改」让代码满足 PEP 8,保留你原有的换行风格;black 是「不妥协的格式化器」,会按自己一套规则整体重排(默认行宽 88),几乎无配置项。团队选 black 能彻底消除风格争论、diff 更稳定;想保守改动则用 autopep8。如今 ruff format 也提供与 black 兼容的格式化。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📰 AI 资讯