!文章内容如有错误或排版问题,请提交反馈,非常感谢!
PEP全称是 Python Enhancement Proposal,翻译成中文是 Python 改进提案。它是 Python 记录 Python 变化的书面文档。PEP 文档对 Python 的作用非常重要,根据讨论的主题,PEP 主要有以下 3 种用途:
- 通知:汇总 Python 核心开发者需要的信息,并通知 Python 发布日程。
- 标准化:提供代码风格、文档或其他指导意见。
- 设计:对提交的功能进行说明。
读 Python 源代码可以帮助你了解 Python 的当前的处理逻辑,读 PEP 文档可以帮助你了解 Python 设计的来龙去脉,帮助你解答如下问题:
- A 功能为什么要以这样的方式运行?
- Python 为什么没有 B 功能?
大多数情况下,关于该功能的某个 PEP 文档已经该出了上述问题的详细答案。很多提交关于 Python 语言功能的 PEP 文档并没有通过。这些文档可以作为历史资料来参考。
所有提交过的 PEP 都被汇总在一个文档中,就是PEP 0 — Index of Python Enhancement Proposals (PEPs)。PEP 很有多类型,为了把时间花在刀刃上,也不需要所有的 PEP 文件都读,比如 Rejected、Deferred、Superseded 和 Draft 的。另外有些和我们学习使用 Python 关系不大,如新版本发布安排的,迁移项目托管平台的。每个 PEP 都有对应的类型(PEP Status Key):
- A – Accepted (Standards Track only) or Active proposal 已接受(仅限标准跟踪)或有效提案
- D – Deferred proposal 延期提案
- F – Final proposal 最终提案
- P – Provisional proposal 暂定提案
- R – Rejected proposal 拒绝提案
- S – Superseded proposal 被取代的提案
- W – Withdrawn proposal 撤回提案
核心要看的其实是 F 类型提案,以下为一些比较重要的 PEP:
- PEP 0 — PEP 文档的目的、格式和工作流程标准
- PEP 7 — Style Guide for C Code,如果想在 Python 代码中潜入 C 语言代码,值得一看
- PEP 8 — Style Guide for Python Code,Python 编码规范
- PEP 20 — The Zen of Python
- PEP 202 — List Comprehensions,列表生成式
- PEP 205 — Weak References
- PEP 274 — Dict Comprehensions,字典生成式
- PEP 234 — Iterators,迭代器
- PEP 249 — Python Database API Specification v2.0
- PEP 257 — Docstring Conventions
- PEP 282 — A Logging System,日志记录的详细介绍
- PEP 289 — Generator Expressions,生成器表达式
- PEP 302 — New Import Hooks
- PEP 309 — Partial Function Application 偏函数
- PEP 318 — Decorators for Functions and Methods 装饰器
- PEP 342 — Coroutines via Enhanced Generators 协程和 yield
- PEP 343 — The “with” Statement,with 语句
- PEP 380 — Syntax for Delegating to a Subgenerator yield from 语法
- PEP 405 — Python Virtual Environments,虚拟环境
- PEP 443 — Single-dispatch generic functions Python 3 的 singledispatch 装饰器
- PEP 484 — Type Hints 类型约束
- PEP 492 — Coroutines with async and await syntax 协程与 async/await 语法
- PEP 498 — Literal String Interpolation Python 3.6 新加的「格式化字符串字面量」
- PEP 525 — Asynchronous Generators 异步生成器
- PEP 526 — Syntax for Variable Annotations
- PEP 3099 — Things that will Not Change in Python 3000,关于争议内容点的讨论
- PEP 3101 — Advanced String Formatting 字符串格式化
- PEP 3105 — Make print a function 为什么 Python 3 要把 print 改为函数
- PEP 3107 — Function Annotations 函数注解
- PEP 3115 — Metaclasses in Python 3000 Python 3 的元类
- PEP 3119 — Introducing Abstract Base Classes 抽象基类,不止一次看到有人用的 abc 模块都是错误的
- PEP 3135 — New Super Python 3 中的 super
- PEP 3148 — futures – execute computations asynchronously,futures 的详细介绍
- PEP 3156 — Asynchronous IO Support Rebooted: the “asyncio” Module,asyncio 模块
- PEP 3333 — Python Web Server Gateway Interface v1.0.1这是更新版的 PEP 333,描述 WSGI 协议,告诉你如何在 web 服务器与 web 应用/web 框架之间的可移植的标准接口。
其他参考: