Python的PEP是什么

Python的PEP是什么

在本文中,我们将向您介绍Python的PEP,即Python Enhancement Proposal。

PEPPython Enhancement Proposal 的缩写。PEP是一个设计文档,用于向Python社区提供信息或描述Python的新功能、流程或环境。PEP应提供功能的简要技术描述以及其原因。PEP旨在成为提出重要新功能、收集社区对问题的意见并记录Python设计决策的主要机制。

PEP的作者负责在社区中建立共识并记录反对(异议)意见。

由于PEP以文本文件形式存储在一个版本控制的存储库中,其修订历史记录可以作为功能提案的历史记录。可以使用标准的git命令获取以前的版本,并且还可以在GitHub上浏览。

PEP的类型

PEP分为三种类型-

  • 标准跟踪PEP 定义了一个新的Python功能或实现。它还可以指定一个标准库之外将支持的互操作标准,直到未来的PEP添加标准库支持。

  • 信息性PEP 处理Python设计问题或为Python社区提供一般指导或信息,而不提出新功能。用户和实施者可以忽略或遵循Informational PEPs,因为它们不一定代表Python社区的共识或推荐。

  • 流程PEP 描述了与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 Editor Responsibilities & Workflow)。

PEP编辑者由现任编辑邀请,他们可以通过提及@python/pep-editors在GitHub上联系到。PEP工作流程可以完全通过GitHub PEP存储库的问题和拉取请求进行完成。

从一个Python的想法开始

PEP流程始于一个新的Python想法。一个PEP应该包含一个重要的提案或新概念;PEP越集中,成功的可能性就越大。大多数改进和错误修复不需要PEP,并可以直接报告给Python问题跟踪器。PEP编辑者保留拒绝过于广泛或不专注的PEP提案的自由裁量权。当有疑问时,请将PEP分成多个集中的部分。

每个PEP都需要一个负责人,负责以下面定义的方式和格式撰写PEP,在适当的论坛上主持讨论,并努力围绕这个概念建立共识。PEP负责人(也被称为作者)应首先确定这个想法是否可以进行PEP。除非有更专门的领域,例如静态类型的Typing-SIG或Python讨论组的包装类别,通常在Python讨论区的想法类别发布是最好的方式。

在正式撰写PEP之前公开评估一个概念的目的是为了节省潜在作者的时间。许多修改Python的想法已经因为各种原因被提出和拒绝。在写作PEP之前先询问Python社区一个提案是否原创有助于避免在之前的对话中几乎肯定会被拒绝的事物上浪费时间(仅仅搜索互联网并不能总能解决问题)。这也有助于确保这个想法适用于整个社区而不仅仅是作者自己。仅仅因为一个想法对于创造者似乎很好,并不保证它对于Python使用的大多数地区的大多数人都有效。

在负责人询问Python社区一个想法是否有可能被接受之后,应该将一个起草的PEP提交给上述场所。这样可以让作者填写完整的草案PEP,以便格式正确、高质量,并解决有关提案的早期问题。

结论

在本文中,我们学习了PEP,PEP的不同版本,PEP的类型,PEP的受众以及PEP的工作流程。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程