当前位置: 首页 > 工具软件 > PEP > 使用案例 >

学习Python,经常见到PEP,那么PEP是什么呢?

拓拔俊艾
2023-12-01

首先,查百度得知:
PEP是Python Enhancement Proposals的缩写。一个PEP是一份为Python社区提供各种增强功能的技术规格,也是提交新特性,以便让社区指出问题,精确化技术文档的提案。
其次,查其他的文章博客得知:
PEP还可以这样定义:PEP的全称是Python Enhancement Proposals,其中Enhancement是增强改进的意思,Proposals则可译为提案或建议书,所以合起来,比较常见的翻译是Python增强提案或Python改进建议书。
此外:
Python核心开发者主要通过邮件列表讨论问题、提议、计划等,PEP通常是汇总了多方信息,经过了部分核心开发者review和认可,最终形成的正式文档,起到了对外公示的作用,我们把它称之为Python的增强提案更确切一些。

PEP 1 中给出了官方的PEP的定义,有兴趣的可以参考一下:

What is a PEP?
PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment. The PEP should provide a concise technical specification of the feature and a rationale for the feature.
We intend PEPs to be the primary mechanisms for proposing major new features, for collecting community input on an issue, and for documenting the design decisions that have gone into Python. The PEP author is responsible for building consensus within the community and documenting dissenting opinions.
Because the PEPs are maintained as text files in a versioned repository, their revision history is the historical record of the feature proposal [1].

PEP的官网是:https://www.python.org/dev/peps/

PEP1给出了PEP的三种类型:分别为:标准跟踪的PEP、信息类PEP和过程PEP。

  1. 标准跟踪PEP描述了Python的一个新特性或实现。
    它还可能描述一个互操作性标准,在后续PEP在未来版本中添加标准库支持之前,该互操作性标准将在当前Python版本的标准库之外得到支持。例如PEP 20(The Zen of Python,即著名的Python之禅)、PEP 404 (Python 2.8 Un-release Schedule,即宣告不会有Python2.8版本)。
  2. 信息性PEP描述了Python设计问题,或者为Python社区提供了一般的指导方针或信息,但没有提出新的特性。信息性PEP不一定代表Python社区的共识或建议,因此用户和实现人员可以自由地忽略信息性PEP或听从他们的建议。例如PEP 1(PEP Purpose and Guidelines,即关于PEP的指南)、PEP 347(Migrating the Python CVS to Subversion,即关于迁移Python代码仓)。
  3. 进程PEP描述围绕Python的进程,或建议对进程(或进程中的事件)进行更改。进程pep类似于跟踪pep的标准,但适用于Python语言本身之外的其他领域。他们可能会提出一个实现,但不会提出Python的代码库;它们往往需要社区的共识;与信息性的pep不同,它们不仅仅是建议,用户通常不能随意忽略它们。示例包括过程、指南、对决策过程的更改,以及对Python开发中使用的工具或环境的更改。任何元PEP也被认为是流程PEP。

每个PEP最初都是一个草案(Draft),随后会经历一个过程,因此也就出现了不同的状态。以下是一个流程图:

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 撤回提案

PEP1中介绍了很多关于PEP的问题,感兴趣的可以直接查看原文。原文地址:
https://www.python.org/dev/peps/pep-0001/

PEP后面的编号是由编辑给定的。

下面是参考的别的博客。

为什么要读PEP?
无论你是刚入门Python的小白、有一定经验的从业人员,还是资深的黑客,都应该阅读Python增强提案。依我之见,阅读PEP至少有如下好处:
(1)了解Python有哪些特性,它们与其它语言特性的差异,为什么要设计这些特性,是怎么设计的,怎样更好地运用它们;
(2)跟进社区动态,获知业内的最佳实践方案,调整学习方向,改进工作业务的内容;
(3)参与热点议题讨论,或者提交新的PEP,为Python社区贡献力量。说到底,学会用Python编程,只是掌握了皮毛。PEP提案是深入了解Python的途径,是真正掌握Python语言的一把钥匙,也是得心应手使用Python的一本指南。大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,
下面,我列举了一些PEP,推荐大家一读:
PEP 0 – Index of Python Enhancement Proposals
PEP 7 – Style Guide for C Code,C扩展
PEP 8 – Style Guide for Python Code,编码规范(必读)
PEP 20 – The Zen of Python,Python之禅
PEP 202 – List Comprehensions,列表生成式
PEP 274 – Dict Comprehensions,字典生成式
PEP 234 – Iterators,迭代器
PEP 257 – Docstring Conventions,文档注释规范
PEP 279 – The enumerate() built-in function,enumerate枚举
PEP 282 – A Logging System,日志模块
PEP 285 – Adding a bool type,布尔值
PEP 289 – Generator Expressions,生成器表达式
PEP 318 – Decorators for Functions and Methods, 装饰器
PEP 342 – Coroutines via Enhanced Generators,协程
PEP 343 – The “with” Statement,with语句
PEP 380 – Syntax for Delegating to a Subgenerator,yield from语法
PEP 405 – Python Virtual Environments,虚拟环境
PEP 471 – os.scandir() function,遍历目录
PEP 484 – Type Hints,类型约束
PEP 492 – Coroutines with async and await syntax,async/await语法
PEP 498 – Literal String Interpolation Python,字符串插值
PEP 525 – Asynchronous Generators,异步生成器
PEP 572 – Assignment Expressions,表达式内赋值(最争议)
PEP 3105 – Make print a function,print改为函数
PEP 3115 – Metaclasses in Python 3000,元类
PEP 3120 – Using UTF-8 as the default source encoding
PEP 3333 – Python Web Server Gateway Interface v1.0.1,Web开发

 类似资料: