如何变得更加pythonic?——一份关于PEP的入门指南
PEP,全称Python Enhancement Proposal,一般译为python增强提案,是一套关于Python百科全书式指南,全面记载python版本升级的完整纪实,几乎所有python的疑问都能在PEP中予以解答或者至少找到参考——是的,这就是一份python白皮书。
2000年7月13日PEP0创建,至今刚好是第20个年头,已发展成为几百个PEP提案。其中,不仅仅是python编程规范标准,更全面记载了pythoners关于改进研发python的提议、讨论,还有python版本的更新周期计划,可以说无论是python入门初学还是资深极客,都能深飨其中、受益良多。
一份PEP提案包括摘要和正文两部分,其中典型的摘要至少包括7个信息:分别是PEP编号、标题、最后修订日期、作者、状态、类型和创建日期,正文结构和内容则依不同PEP类型而异。
PEP0——关于PEPs的索引
简要介绍几个摘要信息字段:
PEP编号:PEP提案的文档序号,为1-4位数字。曾经试图从PEP编号来判断一份文档的类型,但后来发现这个编号几乎毫无规律可言,仅仅由其作者进行命名。
虽然编号毫无规律(主要是按照创建时间先后顺序编号),但也有一些大的编号原则,例如:
PEP0-12,元PEP,关于PEP的PEP介绍
PEP200,python2.0版本
PEP3000-PEP3999,python3.0版本相关提案,其中PEP3000-3099又是python3000的元PEP
PEP8000+,python之父龟叔退出决策层后的决策进程
PEP编号一旦指定则"终身"不能修改,即使是该提案废弃也不回收编号。另外,有的PEP编号也被保留以作未来使用,目前PEP801是唯一一个保留编号。
Status:状态,一份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,撤回提案
Type:类型,PEP文档主要分为三类,
I - Informational PEP,资讯类
P - Process PEP,进程类
S - Standards Track PEP,标准类
所以,推荐学习的PEP文档一般是A状态和F状态,其次是D和P状态。当然,阅读其他状态的PEP文档也能拓展对python开发历程和大佬们思想斗争的了解。
其中,标准类提案占比最大,涵盖了python语法、标准和编程规范的行为指南;资讯类用于宣布python的一些大的改进计划,如各个大版本发布前都会有一个Release Schedule(版本周期)的PEP;进程类,python之外的一些信息,例如:PEP 581 -- Using GitHub Issues for CPython。
查阅PEP官方文档的渠道主要有2种,一个是python官方主页,另一个是python GitHub仓库。
python官方主页,通过开发者指南(Python Developer’s Guide)链接可以跳转到PEP0索引页,进而可以通过目录查找所有PEP信息。
python官方主页中PEPs目录
官方主页中,给出了2种索引目录形式,一个是按分类索引,即按照PEP状态信息进行分类,例如Accepted、Finished等等;另一个是按照PEP编号索引,纯粹是按照编号序列进行排布。在每个索引目录中,可以通过类型和状态字缩写来迅速了解一份PEP文档状态,从而判断是否有必要阅读。
PEP596给出了python3.9版本周期
PEP597明确windows系统默认使用UTF-8编码
另一个查阅PEP文档的渠道是python的官方GitHub仓库,与官方主页文档同步,如果是GitHub爱好者也可选择在这里查阅。
PEP仓库目前有288位贡献者、8294次提交
另外,除了python官方渠道,国内也有很多python爱好者将一些重要的PEP文档翻译成中文(包括GitHub上也有PEP汉译文档仓库),可供入门学习,只是目前数量还比较少。
如果想变得更加pythonic,那么有些PEP几乎是必读的。以下列出了几个非常重要的PEP文档(排名区分先后):
PEP0,全面介绍PEPs
PEP8,python编程规范,详细介绍了一份可读性好的python程序应该具备怎样的编程规范
PEP20,python之禅,一共20条语句,可通过任何python终端输入"import this"打印显示,是python世界崇尚的方法论和价值观
PEP328,python模块导入规范,明确绝对/相对导入、多行导入的问题
PEP257,python文档注释规范
PEP3099,了解python3.0版本中那些被否决的提案,比如隐藏类方法中的self参数(类似其他语言中不显示给出)、重命名lambda匿名函数等等
Python x.x Release Schedule,持续跟踪python版本最新进程
其他感兴趣的python特性PEP文档
PEP不是开发者的专享,而是面向所有pythoners开放。在PEP1中给出了参与PEP制定的工作流程:
在GitHub上Folk PEP仓库,创建一个草案(编号暂定为9999)
选择PEP类型(资讯类、标准类、进程类),状态为Draft
参照PEP12中的PEP书写规范,向官方仓库提交一个pull request
PEP编辑审阅提交的PEP文档
一旦提交被接受,则分配一个正式的PEP编号,意味着在python改进升级的历史进程留下自己的足迹
当然,真正能成为PEP的一名作者并不容易,但倘若真的有兴趣也有实力,那么贡献一个PEP提案真是一件值得称耀的事情。
本文面向python初学者对PEP进行基本介绍,包括PEP信息分类、查阅PEP渠道和几个必读PPE文档等信息,旨在使初学者尽快入门和学习PEP相关文档信息
PEP是python的一系列增强提案文档,始于2000年,全面涵盖各类python信息,包括版本计划、语法特性、编码风格规范等
PEP文档分为资讯、标准和进程3类提案
PEP文档具有时效性,其状态包括草案、临时、有效、替代和废弃等
PEP文档是提高对python理解和运用的不二选择
任何pythoner都可以参与贡献PEP文档,如果被采纳值得称耀
注:点击阅读原本进入PEP首页
相关阅读: