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

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

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

PEP是什么?

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

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

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

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

官方将PEP分成三类:

I - Informational PEP

P - 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 347(Migrating the Python CVS to Subversion,即关于迁移Python代码仓)。

标准类:这类PEP主要描述了Python的新功能和新实践(implementation),是数量最多的提案。例如我之前推文《详解Python拼接字符串的七种方式》提到过的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扩展
PEP 8 -- Style Guide for Python Code,Python编码规范(必读)
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,布尔值(建议阅读《Python对象的身份迷思:从全体公民到万物皆数》)
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,默认UTF-8
PEP 3333 -- Python Web Server Gateway Interface v1.0.1,Web开发
PEP 8000 -- Python Language Governance Proposal Overview,GvR老爹推出决策层后,事关新决策方案

关于PEP,知乎上有两个问题,推荐大家关注:哪些PEP值得阅读(https://dwz.cn/7CHMBlLu),如何看待PEP 572(https://dwz.cn/L46jpzMB)。

对PEP的贡献

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

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

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

我用心搜集了几篇中文翻译成果,分享给大家:

PEP8 https://dwz.cn/W01HexFD
PEP257 https://dwz.cn/JLctlNLC
PEP328 https://dwz.cn/4vCQJpEP
PEP333 https://dwz.cn/TAXIZdzc
PEP484 https://dwz.cn/dSLZgg5B
PEP492 http://t.cn/EALeaL0
PEP541 https://dwz.cn/ce98vc27
PEP3107 http://suo.im/4xFESR
PEP3333 https://dwz.cn/si3xylgw

最后,表达一下我的私心:

(1)希望本文能给大家带来知识和见识的增长,激发一些小伙伴的学习热情

(2)希望有小伙伴去翻译更多的PEP,造福Python的中文学习社区

-----------------

本文原创并首发于微信公众号【Python猫】,后台回复“爱学习”,免费获得20+本精选电子书。

学习Python,怎能不懂点PEP呢? 1相关推荐

  1. 派森编程软件python-零基础学习Python需要用什么开发工具?

    最近有不少读者私信我,这不刚开始学习Python就开始遇到难题了,对于Python IDE都比较纠结,希望找到一些适合自己的.Python开发工具.本篇给大家分享几款Python开发工具,供正在纠结用 ...

  2. 学习Python需要用的开发工具

    首推的Pycharm. 首先,PyCharm用于一般IDE具备的功能,比如, 调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制 另外,PyCharm还提供了一些很好 ...

  3. 不懂编程可以自学python吗-关于大学小白如何学习Python语言程序设计

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 一.问题阐述 对于刚刚进入大学小白的我们对许许多多课程感到陌生 ...

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

    首先,查百度得知: PEP是Python Enhancement Proposals的缩写.一个PEP是一份为Python社区提供各种增强功能的技术规格,也是提交新特性,以便让社区指出问题,精确化技术 ...

  5. python自学看不懂怎么办_零基础学习python但是基础教程一看到后面就开始看不懂了,怎么办?...

    廖大的教程看不懂不要担心,简明教程也看不下去也不要怕,世界上总有人基础比你好的,不过我们可以用笨办法来学习python. 0,先找一个python3版本的<笨办法学python>,从头看, ...

  6. python魔法方法学不懂_深入学习Python之魔法方法

    什么是Python魔法方法 魔法方法就如同它的名字一样神奇,总能在你需要的时候为你提供某种方法来让你的想法实现.魔法方法是指Python内部已经包含的,被双下划线所包围的方法,这些方法在进行特定的操作 ...

  7. 怎么学python知乎_你是怎么学习Python的 ?

    大家不要看到这个文章的题目,就认为这是一篇广告软文.然而并不是,因为我看到了很多同行都被大数据.人工智能的热潮吸引了,开始纷纷学习python.这是好事,但看到了好多人都走了不少弯路,浪费了时间.于是 ...

  8. Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐

    转载自:https://github.com/Yixiaohan/codeparkshare Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐 本文 主要 针对 ...

  9. 黑客都用Python?学习Python的4个理由!

    2019独角兽企业重金招聘Python工程师标准>>> Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 重点是,Python 是一种对初学者非常友好的 ...

最新文章

  1. 重磅直播|大规模点云可视化技术
  2. GoogleTest测试框架搭建方法
  3. AngularJS鼠标进入划出事件
  4. vant 项目_如何搭建mpvue框架搭配vant组件库的小程序项目
  5. DrawText函数
  6. leetcode算法题--一周中的第几天
  7. sigmoid函数(Logistic函数)
  8. java 银行项目对于金额的面试题_2019年面试题小结
  9. kickstart 安装CentOS GPT分区的完整ks示例
  10. mysql isam 食物_MySQL常用存储引擎之MyISAM
  11. Codeforces Round #225 (Div. 1) E. Vowels 容斥 + sosdp
  12. P1352-没有上司的舞会【树形dp】
  13. 从命令式功能到纯功能性,然后再返回:Monads与范围内的延续
  14. 466. 统计重复个数 golang[转]
  15. python 读写 json文件
  16. 实操高校数据中心vsphere6.0升级6.5,重新规划网络。
  17. 3D打印产业链全景图
  18. CF1157D N Problems During K Days(简单构造)
  19. 永洪科技贺新颖:业务中台+数据中台,赋能企业核心业务
  20. MYSQL ERROR 1130 (HY000) 的错误解决方案

热门文章

  1. QVGA HVGA WVGA区别
  2. java 矩形 旋转_java-旋转矩形并将其在sin波中移动-使用grap...
  3. 千亿级平台技术架构:为了支撑高并发,我把身份证存到了JS里
  4. 深度学习前沿算法思想
  5. miniconda 安装与源配置
  6. matlab实例静电场,浅析Matlab模拟静电场三维图与恒定电流场模拟静电场
  7. 33 《对权威的服从:一次逼近人性真相的心理学实验》 -豆瓣评分9.0
  8. win7什么浏览器好用稳定速度快
  9. 李翰卿治疗小儿五更咳嗽经验
  10. 一个即将走向社会的软件技术专业学生的感想