什么是Python的PEP?
在本文中,我们将向您解释有关Python中的 PEP ,即Python Enhancement Proposal。
PEP 是 Python Enhancement Proposal 的缩写。PEP是一种设计文档,向Python社区提供有关Python,其过程或其环境的新功能或描述信息。 PEP应提供功能的简要技术描述以及其原因。PEP旨在成为提出重要新功能,收集社区对问题的意见以及记录Python设计决策的主要机制。
PEP的作者负责在社区中建立共识并记录反对(异议)意见。
由于PEP存储为版本控制库中的文本文件,因此其修订历史记录用作功能提案的历史记录。可以使用标准的git命令访问此历史记录以获取以前的版本,并且也可以在GitHub上浏览它们。
更多Python相关文章,请阅读:Python 教程
PEP的类型
PEP分类为三种-
- A Standards Track PEP定义了Python的新功能或实现。它还可以指定在标准库之外支持的互操作性标准,适用于当前Python版本,直到以后的PEP添加标准库支持。
-
Informational PEP解决了Python设计问题或向Python社区提供一般指导或信息而不提出新功能。 用户和实施者可以忽略或遵循信息性PEP,因为它们不一定代表Python社区的共识或建议。
-
A Process PEP 描述与Python相关的进程或提出更改(或事件)的Python。流程PEP类似于标准跟踪PEP,因为它们适用于Python语言之外的领域。它们可能提供实现,但不适用于Python代码库; 它们经常需要社区共识。因此,与信息性PEP不同,它们不仅是用户不得不无视/忽略的建议。过程,指南,决策过程的更改以及Python开发中使用的工具或环境的修改都是例子。任何元PEP也是流程PEP。
PEP的工作流程
Python的Steering Council
此PEP经常参考“Steering Council”或“Council”。这指的是PEP 13中提到的当选的Steering Council的当前成员,他们是是否接受或拒绝PEP的最终决策者。
Python的核心开发人员
此PEP经常提到“核心开发人员”。这与PEP 13中定义的目前活动的Python核心团队成员有关。
Python的BDFL
本PEP的先前版本将PEP决策者称为“BDFL-Delegate”。这是对Python旧治理模式的历史性参考,其中所有设计权限最终均来源于Python计算机语言的原始开发者Guido van Rossum。 Steering Council的设计权限源自当前活动核心开发人员的选举。现在使用PEP-Delegate代替BDFL-Delegate。
PEP编辑者
PEP编辑者负责管理PEP工作流程的行政和编辑部分(例如分配PEP编号和更改其状态)。有关更多信息,请参见PEP编辑职责和工作流程。
PEP编写由现有编辑人员邀请完成,可以在GitHub上提及@python/pep-editors联系编辑人员。PEP流程可以通过GitHub PEP存储库问题和拉取请求完全完成。
从Python的想法开始
PEP流程始于一个新的Python想法。一个PEP应该包含一个重要的提案或新概念;PEP越集中,成功的可能性越大。大多数改进和错误修复不需要PEP,可以直接报告给Python问题跟踪器。PEP编辑人员保留拒绝似乎过于广泛或不集中的PEP提案的自由裁量权。如果有疑问,请将PEP分为多个集中的部分。
每个PEP都需要一个发起人,他按照下面定义的方式和格式编写PEP,在适当的论坛上主持讨论,并努力在概念周围发展社区共识。PEP冠军(也称为作者)应该首先确定这个想法是否适合成为PEP。除非是更专业的领域,比如静态类型的Typing-SIG或Python讨论中的包装类别,否则发布到Python讨论中的Ideas类别通常是最好的方法。
在撰写PEP之前公开评估概念的目的是为了节省潜在作者的时间。许多修改Python的想法已经被提出并因各种原因被拒绝。首先询问Python社区一个提议是否原创有助于避免浪费时间在几乎肯定会基于以前的对话而被拒绝的东西上(搜索互联网并不总是奏效)。它还有助于确保这个想法适用于整个社区,而不仅仅是作者。仅仅因为一个想法对创建者来说似乎很好,并不保证它对使用Python的大多数地区的大多数人都适用。
在发起人询问Python社区一个想法是否有可能被接受之后,起草的PEP应该提交给上述场所。这使得作者可以填写起草的PEP,以使其正确地格式化、高质量,并解决有关提案的早期问题。
结论
在本文中,我们学习了PEP,PEP的不同版本,PEP的类型,PEP的受众和PEP的工作流程。