学径 LearnPath

编程语言基础 / Wiki

PEP 8

Python 社区广泛遵循的代码风格指南:如何命名、缩进与排版,好让人能读懂彼此的程序。

它是什么

PEP 8 是一份关于如何书写 Python 代码的风格指南。它不改变语言能做什么,而约定「怎样写,别人(包括几个月后的自己)更容易读懂」:变量与函数怎么命名、一行写多长、缩进用几个空格、空行放在哪里。

对科学营而言,记住全部细则并不必要;先建立判断:程序既是给机器执行的,也是给人阅读的。风格一致,思想才更容易被核对与转交。

名字从哪来

PEP 是 Python Enhancement Proposal(Python 增强提案)的缩写:社区用编号文档讨论语言、标准库与流程的改进。其中第 8 号专门谈代码风格,由 Guido van Rossum、Barry Warsaw 等人起草,后经社区长期修订,成为事实上最常被引用的一份约定。

「PEP 8」因此既是文档名,也常被口语化成「按 PEP 8 来写」——意思是:遵循这份风格,而不是另起一套私人规矩。

它怎么工作

PEP 8 本身不是解释器。违反它,程序往往仍能运行;工具(如自动格式化与静态检查)可以按它的规则提示或改写文本。真正约束程序行为的,仍是语法与语义;PEP 8 约束的是可读性这一层。

与本课最相关的几条习惯包括:

  • 变量与函数名多用小写字母,单词之间用下划线连接,例如 temperature_c、trial_id(常称 snake_case)。
  • 类名多用每个单词首字母大写的写法,例如 SampleRecord(常称 CapWords)。
  • 缩进用空格,社区默认一层四个空格;不要把 Tab 与空格混用。
  • 避免毫无含义的单字母名字(数学公式里的 xx、ii 等短名除外),也避免用 l、O、I 这类易与数字混淆的字符。
  • 不要覆盖内置名字:把变量叫成 print、list、type,会让原本的功能暂时或局部失效。

完整文本很长,也不必一次背完。写程序时,先问:这个名字能否说明角色?这段排版是否让人一眼看见结构?

生活里在哪里

实验室共用同一份分析脚本、课程作业互评、开源项目接受补丁时,风格一致能减少「看起来像另一门方言」的摩擦。新闻机构、研究组与许多公司把 PEP 8(或在其之上的内部补充)写进贡献说明:不是为了美观竞赛,而是为了让审查者把注意力放在模型与边界上,而不是空格与大小写。

对话式编程时,也可以要求模型「按 PEP 8 命名与排版」——人仍然要验收:名字是否对应真实量,风格是否只是表面整齐。见 对话式编程。

和相近概念的差别

PEP 8 是风格指南。Python 语法是语言规则:违反语法会直接导致程序无法运行。内置函数与关键字(如 print、class)属于语言提供的名字,覆盖它们会造成困惑,PEP 8 也明确劝阻。

其他编号的 PEP 讨论的是语言特性或流程,不是同一份「怎么排版」的文档。某个团队的额外规范可以建立在 PEP 8 之上,但不宜与之无谓地冲突。

常见误会

误会 1:不符合 PEP 8,程序就不能运行。

风格与语法是两层。难看但合法的程序仍可执行;可读性差的代价出现在阅读、协作与排错时。

误会 2:PEP 8 要求每个名字都又长又复杂。

它要求的是清楚,不是越长越好。循环里的 i、坐标里的 x 在上下文明确时仍然常见;含糊的 data1、tmp2 才是问题。

误会 3:背下 PEP 8 就等于学会了 Python。

风格服务于表达。理解赋值、类型与边界,仍然比记住空行条数更重要。

想知道更多

  • 文档:PEP 8 – Style Guide for Python Code(官方原文)
  • 书:埃里克·马瑟斯《Python编程:从入门到实践(第3版)》
  • 书:艾伦·唐尼《像计算机科学家一样思考Python(第2版)》
  • 书:布鲁克希尔《计算机科学概论》

未登录时不会保存学习进度