初入门Python的小白介绍PEP是什么?

或许你是一个初入门     Python   的小白,完全不知道PEP是什么。又或许你是个学会了Python的熟手,见过几个PEP,却不知道这玩意背后是什么。那正好,本文将系统性地介绍一下PEP,与大家一起加深对PEP的了解。

目前,国内各类教程不可胜数,虽然或多或少会提及PEP,但笼统者多、局限于某个PEP者多,能够详细而全面地介绍PEP的文章并不多。

本文的目的是:尽量全面地介绍PEP是什么,告诉大家为什么要去阅读PEP,以及列举了一些我认为是必读的PEP,最后,则是搜罗了几篇PEP的中文翻译,希望能为Python学习资料的汉化,做点抛砖引玉的贡献。

 PEP是什么?

PEP的全称是PythonEnhancementProposals,其中Enhancement是增强改进的意思,Proposals则可译为提案或建议书,所以合起来,比较常见的翻译是Python增强提案或Python改进建议书。

我个人倾向于前一个翻译,因为它更贴切。Python核心开发者主要通过邮件列表讨论问题、提议、计划等,PEP通常是汇总了多方信息,经过了部分核心开发者review和认可,最终形成的正式文档,起到了对外公示的作用,所以我认为翻译成“提案”更恰当。

PEP的官网是:https://www.python.org/dev/peps/,这也就是PEP0的地址。其它PEP的地址是将编号拼接在后面,例如:https://www.python.org/dev/peps/pep-0020/就是PEP20的链接,以此类推。

第一个PEP诞生于2000年,现在正好是18岁成年。到目前为止,它拥有478个“兄弟姐妹”。

官方将PEP分成三类:

I-InformaTIonalPEPP-ProcessPEPS-StandardsTrackPEP

其含义如下:

信息类:这类PEP就是提供信息,有告知类信息,也有指导类信息等等。例如PEP20(TheZenofPython,即著名的Python之禅)、PEP404(Python2.8Un-releaseSchedule,即宣告不会有Python2.8版本)。

流程类:这类PEP主要是Python本身之外的周边信息。例如PEP1(PEPPurposeandGuidelines,即关于PEP的指南)、PEP347(     Mi   gra         TI   ngthePythonCVStoSubversion,即关于迁移Python代码仓)。

标准类:这类PEP主要描述了Python的新功能和新实践(implementa  TI on),是数量最多的提案。例如我之前推文《详解Python拼接     字符   串的七种方式》提到过的f-string方式,它出自PEP498(LiteralStringInterpola  TI on,字面字符串插值)。

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

 初入门Python的小白介绍PEP是什么?_设计制作_MEMS/传感技术

PEPprocessflowdiag     ram  

A–Accepted(StandardsTrackonly)orActiveproposal已接受(仅限标准跟踪)或有效提案D–Deferredproposal延期提案F–Finalproposal最终提案P–Provisionalproposal暂定提案R–Rejectedproposal被否决的提案S–Supersededproposal被取代的提案W–Withdrawnproposal撤回提案

在PEP0(IndexofPythonEnhancementProposals(PEPs))里,官方列举了所有的PEP,你可以按序号、按类型以及按状态进行检索。而在PEP1(PEPPurposeandGuidelines)里,官方详细说明了PEP的意图、如何提交PEP、如何修复和更新PEP、以及PEP评审的机制等等。

 为什么要读PEP?

无论你是刚入门Python的小白、有一定经验的从业人员,还是资深的黑客,都应该阅读Python增强提案。

依我之见,阅读PEP至少有如下好处:

(1)了解Python有哪些特性,它们与其它语言特性的差异,为什么要设计这些特性,是怎么设计的,怎样更好地运用它们;

(2)跟进社区动态,获知业内的最佳实践方案,调整学习方向,改进工作业务的内容;

(3)参与热点议题讨论,或者提交新的PEP,为Python社区贡献力量。

说到底,学会用Python编程,只是掌握了皮毛。PEP提案是深入了解Python的途径,是真正掌握Python语言的一把钥匙,也是得心应手使用Python的一本指南。

 哪些PEP是必读的?

如前所述,PEP提案已经累积产生了478个,我们并不需要对每个PEP都熟知,没有必要。下面,我列举了一些PEP,推荐大家一读:

PEP0--IndexofPythonEnhancementProposals
PEP7--StyleGuideforCCode,C扩展
PEP8--StyleGuideforPythonCode,编码规范(必读)
PEP20--TheZenofPython,Python之禅
PEP202--ListComprehensions,列表生成式
PEP274--DictComprehensions,字典生成式
PEP234--I     te   rators,迭代器
PEP257--DocstringConventions,文档注释规范
PEP279--Theenumerate()built-infunction,enumerate枚举
PEP282--ALoggingSystem,日志模块
PEP285--Addingabooltype,布尔值(建议阅读《Python对象的身份迷思:从全体公民到万物皆数》)
PEP289--Genera     torEx   pressions,生成器表达式
PEP318--DecoratorsforFunctionsandMethods,装饰器
PEP342--Coroutines     via   EnhancedGenerators,协程
PEP343--The"with"Statement,with语句
PEP380--SyntaxforDelegatingtoaSubgenerator,yieldfrom语法
PEP405--PythonVirtualEnvironments,虚拟环境
PEP471--os.s     can   dir()function,遍历目录
PEP484--TypeHints,类型约束
PEP492--Coroutineswithasyncandaw     ai   tsyntax,async/await语法
PEP498--LiteralStringInterpolationPython,字符串插值
PEP525--AsynchronousGenerators,异步生成器
PEP572--AssignmentExpressions,表达式内赋值(最争议)
PEP3105--Makeprintafunction,print改为函数
PEP3115--MetaclassesinPython3000,元类
PEP3120--UsingUTF-8asthedefaultsourceencoding
PEP3333--PythonWebServerGatewayInterfacev1.0.1,Web开发
PEP8000--PythonLanguageGovernanceProposalOverview,G     vR   老爹推出决策层后,事关新决策方案

 对PEP的贡献

虽无确切数据作证,我国Python开发者的数量应该比任何国家都多。然而,纵观PEP0里面列举的200多个PEP作者,我只看到了一个像是汉语拼音的国人名字(不排除看漏,或者使用了英文名的)。反差真是太大了。

我特别希望,国内的Python黑客们的名字,能越来越多地出现在那个列表里,出现在Python核心开发者的列表里。

此外,关于对PEP的贡献,还有一种很有效的方式,就是将PEP翻译成中文,造福国内的Python学习社区。经过一番搜索,我还没有看到系统性翻译PEP的项目,只找到了零星的对于某个PEP的翻译。

编辑:hfy

74
110
0
27

相关资讯

  1. 1、两大AI科创平台落户南京智慧岛,重点发展高端智能产业集群2262
  2. 2、腾讯云发布全新升级的金融业务支撑平台,助力构建主可控技术体系3394
  3. 3、美国杨百翰大学开发新无线协定技术,WiFi信号范围扩大60公尺3671
  4. 4、青岛芯谷•Qualcomm中国•歌尔联合创新中心揭牌!提升用户体验1279
  5. 5、广东先导稀材公司ITO靶材及薄膜材料研发基地项目在合肥开工!3901
  6. 6、暴风前夜:WeWork正筹集50亿美元度难关!4847
  7. 7、新研究!格拉斯哥大学实现从光源中提取隐藏的量子信息436
  8. 8、工业富联与海康威视联手打造智能制造示范基地2393
  9. 9、美格智能推首款内置华为海思芯片的LTE无线通信模组SLM7903515
  10. 10、弘芯半导体二期项目开工,立志成为全球第二大CIDM晶圆厂1076
全部评论(0)
我也有话说
0
收藏
点赞
顶部