python中的PEP是什么?怎么理解?(转)
PEP是什么?
PEP的全称是Python Enhancement Proposals,其中Enhancement是增强改进的意思,Proposals则可译为提案或建议书,所以合起来,⽐较常见的翻译是Python增强提案或Python改进建议书。
我个⼈倾向于前⼀个翻译,因为它更贴切。Python核⼼开发者主要通过邮件列表讨论问题、提议、计划等,PEP通常是汇总了多⽅信息,经过了部分核⼼开发者review和认可,最终形成的正式⽂档,起到了对外公⽰的作⽤,所以我认为翻译成“提案”更恰当。
第⼀个PEP诞⽣于2000年,现在正好是18岁成年。到⽬前为⽌,它拥有478个“兄弟妹”。
官⽅将PEP分成三类:
I - Informational PEP
git clone mirrorP - Process PEP
S - Standards Track PEP
其含义如下:
信息类:这类PEP就是提供信息,有告知类信息,也有指导类信息等等。例如PEP 20(The Zen of Python,即著名的Python之禅)、PEP 404 (Python 2.8 Un-release Schedule,即宣告不会有Python2.8版本)。
流程类:这类PEP主要是Python本⾝之外的周边信息。例如PEP 1(PEP Purpose and Guidelines,即关于PEP的指南)、PEP
sizeof函数用途347(Migrating the Python CVS to Subversion,即关于迁移Python代码仓)。
标准类:这类PEP主要描述了Python的新功能和新实践(implementation),是数量最多的提案。例如我之前提到过的f-string⽅式,它出⾃PEP 498(Literal String Interpolation,字⾯字符串插值)。
每个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 撤回提案
在PEP 0(Index of Python Enhancement Proposals (PEPs))⾥,官⽅列举了所有的PEP,你可以按序号、按类型以及按状态进⾏检索。⽽在PEP 1(PEP Purpose and Guidelines)⾥,官⽅详细说明了PEP的意图、如何提交PEP、如何修复和更新PEP、以及PEP评审的机制等等。
为什么要读PEP?
⽆论你是刚⼊门Python的⼩⽩、有⼀定经验的从业⼈员,还是资深的⿊客,都应该阅读Python增强提案。
依我之见,阅读PEP⾄少有如下好处:
(1)了解Python有哪些特性,它们与其它语⾔特性的差异,为什么要设计这些特性,是怎么设计的,怎样更好地运⽤它们;
(2)跟进社区动态,获知业内的最佳实践⽅案,调整学习⽅向,改进⼯作业务的内容;
(3)参与热点议题讨论,或者提交新的PEP,为Python社区贡献⼒量。
说到底,学会⽤Python编程,只是掌握了⽪⽑。PEP提案是深⼊了解Python的途径,是真正掌握Python语⾔的⼀把钥匙,也是得⼼应⼿使⽤Python的⼀本指南。
哪些PEP是必读的?
如前所述,PEP提案已经累积产⽣了478个,我们并不需要对每个PEP都熟知,没有必要。下⾯,我列举了⼀些PEP,推荐⼤家⼀读:
PEP 0 -- Index of Python Enhancement Proposals
PEP 7 -- Style Guide for C Code,C扩展jdbc的操作步骤
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,⽣成器表达式
小白学python买什么书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开发
PEP 8000 -- Python Language Governance Proposal Overview,GvR⽼爹推出决策层后,事关新决策⽅案
对PEP的贡献
虽⽆确切数据作证,我国Python开发者的数量应该⽐任何国家都多。然⽽,纵观PEP 0 ⾥⾯列举的200多个PEP作者,我只看到了⼀个像是汉语拼⾳的国⼈名字(不排除看漏,或者使⽤了英⽂名的)。反差真是太⼤了。
我特别希望,国内的Python⿊客们的名字,能越来越多地出现在那个列表⾥,出现在Python核⼼开发者的列表⾥。
此外,关于对PEP的贡献,还有⼀种很有效的⽅式,就是将PEP翻译成中⽂,造福国内的Python学习社区。经过⼀番搜索,我还没有看到系统性翻译PEP的项⽬,只到了零星的对于某个PEP的翻译。
我⽤⼼搜集了⼏篇中⽂翻译成果,分享给⼤家:
最后,表达⼀下我的私⼼:
fputs怎么用(1)希望本⽂能给⼤家带来知识和见识的增长,激发⼀些⼩伙伴的学习热情怎么定义二维数组c语言
(2)希望有⼩伙伴去翻译更多的PEP,造福Python中⽂社区
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论