学Python,怎能不懂点PEP?

PEP是Python增强提案(Python Enhancement Proposal)的缩写。社区通过PEP来给Python语言建言献策,每个版本的新特性和变化都是通过PEP提案经过社区决策层讨论、投票决议,最终确定的。

也就是说,PEP是各种增强功能和新特性的技术规格,也是社区指出问题、精确化技术文档、推动Python发展的提案。一般情况下,可以将PEP视为Python语言的设计文档,包含了技术规范和功能的基本原理说明等。

分类

官方将PEP分成三类:

  • I - Informational PEP:信息类,说明 Python 中的某一个设计问题,指导方针、共识,发布日程等内容。例如PEP 20(The Zen of Python,即著名的Python之禅)、PEP 404 (Python 2.8 Un-release Schedule,即宣告不会有Python2.8版本)。

  • P - Process PEP:流程类,Python 本身之外的周边信息,开发中使用的工具、流程或者环境的更改说明。PEP 1(PEP Purpose and Guidelines,即关于PEP的指南)、PEP 347(Migrating the Python CVS to Subversion,即关于迁移Python代码仓)。

  • S - Standards Track PEP:标准类,数量最多的提案,描述Python的新功能和新实践。

读Python源代码可以帮助你了解Python的当前的处理逻辑,读PEP文档可以帮助你了解Python设计的来龙去脉,了解Python有哪些特性,为什么没有某些特性,Python与其它语言特性的差异,为什么要设计这些特性,是怎么设计的,怎样更好地运用它们。

说到底,PEP是深入了解Python的途径,是真正掌握Python语言的一把钥匙,也是得心应手使用Python的一本指南。

PEP阅读建议

PEP从2000年开始到目前已经发布了几百个,所有PEP都存在一个github repository仓库中,PEP索引及分类汇总在PEP 0 — Index of Python Enhancement Proposals (PEPs),其中有一些对我们理解和使用python非常重要,推荐大家一读:

  • PEP 20 – The Zen of Python: 应该始终践行的python之禅,python命令行输入“import this”。
The Zen of Python
  • PEP 8 – Style Guide for Python Code: Python代码规范和应该遵守的编码原则,Python编码风格指南,必读。

  • PEP 257 – Docstring Conventions: 文档注释规范,提高代码的可维护性。

  • PEP 287 – reStructuredText Docstring Format: 使用 reStructuredText 标记语言编写带格式的复杂文档。

  • PEP 3333 — Python Web Server Gateway Interface v1.0.1: 更新版WSGI协议,告诉你如何在web服务器与web应用/web框架之间交互的可移植标准接口。

Python 2

Python 2 版本重点关注以下PEP:

  • PEP 201 – Lockstep Iteration (zip function) (2.0)

  • PEP 202 – List Comprehensions (2.0) - 列表生成式

  • PEP 221 – Import As (2.0)

  • PEP 234 – Iterators (2.1) - 迭代器

  • PEP 236 – Back to the __future__ (2.1) - 回到未来,把下一个新版本的特性导入到当前版本

  • PEP 255 – Simple Generators (yield) (2.2) - 生成器

  • PEP 279 – The enumerate() built-in function (2.3) - 枚举方法

  • PEP 282 – A Logging System (2.3) - 日志模块

  • PEP 285 – Adding a bool type (2.3) - 布尔型

  • PEP 289 – Generator Expressions (2.4) - 生成器表达式

  • PEP 308 – Conditional Expressions (2.4) - Python 的三元式: X if C else Y

  • PEP 318 – Decorators for Functions and Methods (2.4) - 装饰器

  • PEP 322 – Reverse Iteration (2.4) - 反向迭代

  • PEP 324 – subprocess - New process module (2.4)

  • PEP 327 – Decimal Data Type (2.4) - 小数点精确计算

  • PEP 341 – Unifying try-except and try-finally - try … except … else … finally ...

  • PEP 342 – Coroutines via Enhanced Generators (2.5) - 协程

  • PEP 343 – The “with” Statement (2.5) - with语句

  • PEP 367 – New Super (2.6) - super调用

Python 2 and 3

  • PEP 274 – Dict Comprehensions (originally 2.3, then 2.7 and 3.0) - 字典表达式

  • PEP 372 – Adding an ordered dictionary to collections (2.7, 3.1) - 有序字典

  • PEP 389 – argparse - New Command Line Parsing Module (2.7, 3.2) - 命令行参数解析模块

Python 3

Python 3 重点:

  • PEP 380 – Syntax for Delegating to a Subgenerator (yield from) (3.3) - 引入“yield from”语法

  • PEP 405 – Python Virtual Environments (3.3) - 虚拟环境

  • PEP 435 – Adding an Enum type to the Python standard library (3.4) - 引入枚举类型

  • PEP 484 - Type Hints (3.5) - 类型约束

  • PEP 485 – A Function for testing approximate equality (3.5) - 约等于

  • PEP 492 – Coroutines with async and await syntax (3.5) - 协程引入async/await语法

  • PEP 525 – Asynchronous Generators (3.6) - 异步生成器

  • PEP 526 – Syntax for Variable Annotations (3.6) - 变量声明

  • PEP 530 – Asynchronous Comprehensions (3.6) - 异步表达式 asynchronous versions of list, set, dict comprehensions and generator expressions

  • PEP 3101 – Advanced String Formatting (3.0) - 新的字符串格式化方法

  • PEP 3105 – Make print a function (3.0) - 为什么Python3要把print改为函数

  • PEP 3107 – Function Annotations (3.0)

  • PEP 3115 – Metaclasses in Python 3000 (3.0)

  • PEP 3119 – Introducing Abstract Base Classes (3000) - 抽象基类

  • PEP 3120 – Using UTF-8 as the default source encoding (3.0)

  • PEP 3129 – Class Decorators (3.0)

  • PEP 3135 – New Super (3.0) - PEP 367 for Python 3.X

  • PEP 3148 – futures - execute computations asynchronously (3.2) - futures的详细介绍

  • PEP 3156 – Asynchronous IO Support Rebooted: the “asyncio” Module (3.3) - 异步IO

参考

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容