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 为什么Python3要把print改为函数
- PEP 3107 — Function Annotations 函数注解
- PEP 3115 — Metaclasses in Python 3000 Python3的元类
- 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框架之间的可移植的标准接口。
其他参考: