或许你是一个初入门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/peps/pep-0020/ 就是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),是数量最多的提案。。

每个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,编码规范(必读)

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开发

PEP 8000 – Python Language Governance Proposal Overview,GvR老爹推出决策层后,事关新决策方案

对PEP的贡献

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

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

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

表达一下我的私心,希望本文能给大家带来知识和见识的增长,激发小伙伴们的学习热情!

转载于:https://www.cnblogs.com/cherry-tang/p/11058784.html

听说你在学Python?来点PEP吧相关推荐

  1. 听说你想学Python爬虫?我从零教你啊

  2. 为何python不好找工作-听说自学Python不好找工作,小白要如何学Python?

    Python作为如今非常火热的编程语言,无论是使用程度还是受关注程度都在不断增加,吸引了不少人前去学习.想要学习Python无非有两种方法--自学和参加培训班,但很多自学Python的人会面临着不好就 ...

  3. 想学Python,梦雅给你指一条明路!

    对于IT零基础的同学,或者对编程不太了解.几乎没有动手敲过代码的纯文科生来说,学习一门编程语言真的不是一件容易的事那有没有比较"容易"的编程语言呢? 还真有!听说,在众多编程语言中 ...

  4. 怕蛇的人如何学Python?

    千年等一回, 等一回啊啊...... 娘子,娘子我回来了. 啊!我的妈! 妖!怪! ...... 不要说许仙连自己老婆都怕, 换做是我怕是要直接晕倒. 毕竟,那不是一条普通的蛇! 大家好,我是干货狗, ...

  5. python为什么那么难学_Python入门很难吗? 为什么越来越多的人都学Python?

    Python都说是最容易学习的编程语言,但是为什么还是有很多的小白在学习的过程中学的云里雾里,一天到晚都是报错,异常,这也怪不得会有那么多人说,学Python是从入门到入土!其实一门编程语言不像语文那 ...

  6. 新手学python用什么软件-初学 Python 需要安装哪些软件?

    自动配置.有效求助.协作编程.版本控制.一站式解决 Python 新手练习中的痛点. /> 痛点 这个学期,我在北得克萨斯大学(University of North Texas)教 INFO ...

  7. 学python需要安装什么-初学 Python 需要安装哪些软件?

    自动配置.有效求助.协作编程.版本控制.一站式解决 Python 新手练习中的痛点. /> 痛点 这个学期,我在北得克萨斯大学(University of North Texas)教 INFO ...

  8. 免费学python的网站-python自学网站

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 继上一篇「python自学之路-序」之后,决定开始零基础学习python ...

  9. 学python找工作有用吗-为什么我不建议你通过 Python 去找工作?

    二哥,你好,我是一名大专生,学校把 Python 做为主语言教给我们,但是我也去了解过,其实 Python 门槛挺高的,所以我在自学 Java,但是我现在并不清楚到底要不要全心的去学 Java,学校里 ...

  10. 转行学python后悔了-转行学Python可以吗?

    相信对于每个人而言,知道编程和学习编程这件事,出发点是不同的.我在北京接触编程的时间是2013年,那个时候还在一个二线城市上大学,还没有这么多各种融资,各种互联网创业的氛围,大家想的更多的是一些线下的 ...

最新文章

  1. 2018.3.31 设计模式之生成器模式详解及例子(对象创建型模式)
  2. batchsize一定是2的幂_支付接口的幂等性设计
  3. vsscode beego 没有提示_轻松搭建基于 Serverless 的 Go 应用(Gin、Beego 举例)
  4. 贝壳app Authorization参数分析
  5. arm export 汇编_C/C++与汇编混合编程有什么好处?
  6. Job 存储和持久化 (第五部分)
  7. Spring/Spring boot正确集成Quartz及解决@Autowired失效问题
  8. mark点Z3学习资料整理
  9. MD4、MD5、SHA1、HMAC、HMAC_SHA1区别
  10. Go适合做什么?为何这么多人偏爱Go语言?
  11. All-Pay Contests(博弈论+机制设计) 论文阅读笔记
  12. 安装wordpress时Error establishing a database connection
  13. 在阿里云OSS,如何更好搭建自己的云储存
  14. BI工具数据看板哪个好,瓴羊Quick BI整不错!
  15. 怎么在计算机里找到CF里保存的视频,cf录像保存在哪?cf怎么样录像保存方法
  16. 25. Green Living 绿色生活
  17. 贡献一下多年珍藏的特效例子
  18. 11月15日火箭VS湖人视频直播在线观看
  19. Docker创建容器找不到网卡:Error response from daemon: network xxxx not found
  20. VS粘贴word时中文乱码修复工具v1

热门文章

  1. 查看总耗时_讲真,我为什么劝你别总加班。
  2. 网络不稳定的原因_原来网络不稳定,也有可能是这个原因造成的!
  3. 经典神经网络 -- MobileNet : 设计原理与pytorch实现
  4. oracle数据库SQL防止超长,SQL Server和Oracle防止数据锁定的比较
  5. php请求图片,PHP - 发送GET请求并获取图片作为回报
  6. vue是否可以做行车轨迹_特斯拉-概念自行车,是否可以走进大众生活
  7. 利用词袋模型和TF-IDF实现Large Movie Review Dataset文本分类
  8. 整理 深入理解RunLoop
  9. linux SSH rsa认证方式登录需理清的问题
  10. HTML常用的标签总结