那些值得阅读的PEP

虽然 PEP(Python Enhancement Proposals) 读起来晦涩难懂(英语是硬伤)

但它是深入了解 Python 这门语言不可或缺的参考资料

浏览整个 PEP 索引,你会看到 Python 从 2 到 3 的设计和演变过程,体会到 Python 社区的活跃对这门语言的影响

在这中众多的 PEP 中,有哪些是值得阅读的?这个问题在知乎上已经有了很好的 回答

还有一篇很不错的文章比较全面地介绍了PEP:学习Python,怎能不懂点PEP呢?

虽然网上有一些零散的 PEP 翻译版本,但我个人还是推荐看英文的,原汁原味

况且我们还有 谷歌翻译 不是吗?再不行来一个插件 沙拉查词,提高你的阅读效率

这里根据我 个人的观点 ,挑选出一些不错的 PEP, 分为 必读选读 两部分

必读(50 个,大部分来自 Finished PEPs (done, with a stable interface)

PEP 0 – Index of Python Enhancement Proposals (PEPs) PEP官网地址,所有PEP的索引

PEP 8 – Style Guide for Python Code Python 编码规范

PEP 202 – List Comprehensions 列表解析式

PEP 205 – Weak References 关于弱引用,引入 weakref 模块

PEP 234 – Iterators 迭代器

PEP 255 – Simple Generators 生成器

PEP 257 – Docstring Conventions 文档注释规范

PEP 274 – Dict Comprehensions 字典解析式

PEP 289 – Generator Expressions 生成器表达式

PEP 279 – The enumerate() built-in function enumerate() 函数

PEP 282 – A Logging System logging 模块

PEP 285 – Adding a bool type 布尔类型

PEP 309 – Partial Function Application 偏函数的实现和应用,functools.partial()

PEP 318 – Decorators for Functions and Methods 装饰器

PEP 324 – subprocess - New process module 子进程模块,subprocess

PEP 328 – Imports: Multi-Line and Absolute/Relative 相对导入和绝对导入

PEP 342 – Coroutines via Enhanced Generators 协程

PEP 343 – The “with” Statement with 语句

PEP 371 – Addition of the multiprocessing package to the standard library 多进程模块,multiprocess

PEP 372 – Adding an ordered dictionary to collections 有序字典,collections.OrderedDict

PEP 380 – Syntax for Delegating to a Subgenerator yield from 语法

PEP 405 – Python Virtual Environments 虚拟环境

PEP 428 – The pathlib module – object-oriented filesystem paths 面向对象的文件系统路径模块,pathlib

PEP 435 – Adding an Enum type to the Python standard library 枚举类型

PEP 443 – Single-dispatch generic functions 装饰器 functools.singledispatch

PEP 484 – Type Hints 类型约束

PEP 498 – Literal String Interpolation 字符串插值( 格式化字符串字面量),f’string{name}’

PEP 492 – Coroutines with async and await syntax async/await 语法

PEP 101 – Advanced String Formatting 字符串格式化 format()

PEP 3102 – Keyword-Only Arguments 关键字参数

PEP 3104 – Access to Names in Outer Scopes nonlocal 关键字的引入

PEP 3105 – Make print a function 将 print 语句改为 print() 函数

PEP 3106 – Revamping dict.keys(), .values() and .items() 关于字典的 keys(), values() 和 items()

PEP 3107 – Function Annotations 函数注解

PEP 3109 – Raising Exceptions in Python 3000 Python3 中的异常 raise

PEP 3110 – Catching Exceptions in Python 3000 Python3 中的异常 except

PEP 3114 – Renaming iterator.next() to iterator.__next__() 将迭代协议的 next() 方法改为 .__next__()

PEP 3115 – Metaclasses in Python 3000 Python3 中的元类

PEP 3116 – New I/O Python中的IO

PEP 3119 – Introducing Abstract Base Classes 引入抽象基类 ABC

PEP 3120 – Using UTF-8 as the default source encoding 将 UTF-8 作为 Python 源码的默认编码格式

PEP 3129 – Class Decorators 类装饰器

PEP 3132 – Extended Iterable Unpacking 迭代解包的拓展

PEP 3134 – Exception Chaining and Embedded Tracebacks Python3 中的异常链和内嵌回溯

PEP 3135 – New Super Python3 中的 super() 函数

PEP 3137 – Immutable Bytes and Mutable Buffe 不可变的 Bytes 和可变的 Buffer

PEP 3148 – futures - execute computations asynchronously 并发模块,concurrent.futures

PEP 3155 – Qualified name for classes and functions 引入 __qualname__ 属性

PEP 3156 – Asynchronous IO Support Rebooted: the “asyncio” Module 老爹的 asyncio

PEP 3333 – Python Web Server Gateway Interface v1.0.1 WSGI 协议

选读(23 个)

PEP 1 – PEP Purpose and Guidelines 关于PEP的指南

PEP 7 – Style Guide for C Code C扩展编码规范

PEP 20 – The Zen of Python Python之禅

PEP 227 – Statically Nested Scopes 静态作用域,LEGB中的E

PEP 237 – Unifying Long Integers and Integers 将 py2.x 中的整型和长整型统一

PEP 238 – Changing the Division Operator 修改了除号 ‘/‘ 的计算意义

PEP 263 – Defining Python Source Code Encodings 定义 Python 源代码的编码格式

PEP 308 – Conditional Expressions 条件表达式

PEP 352 – Required Superclass for Exceptions 引入异常基类 BaseException

PEP 389 – argparse - New Command Line Parsing Module 命令行参数解析模块

PEP 409 – Suppressing exception context 引入 raise … from …

PEP 448 – Additional Unpacking Generalizations 解包操作的扩展

PEP 454 – Add a new tracemalloc module to trace Python memory allocations tracemalloc 模块

PEP 471 – o.scandir() function – a better and faster directory iterator 目录遍历

PEP 479 – Change StopIteration handling inside generators 关于生成器的 StopIteration 异常

PEP 525 – Asynchronous Generators 异步生成器,引入 __aiter__ 和 __anext__

PEP 530 – Asynchronous Comprehensions 异步解析式

PEP 557 – Data Classes Python3.7 才引入的数据类

PEP 566 – Metadata for Python Software Packages 2.1 Python 第三方包的元数据

PEP 572 – Assignment Expressions 表达式内赋值,最具争议的提案,老爹不容易啊

PEP 3141 – A Type Hierarchy for Numbers 数字类(Numeric Classes)的继承链

PEP 3144 – IP Address Manipulation Library for the Python Standard Library ipaddress 模块

PEP 3154 – Pickle protocol version 4 pickle 协议

文章目录
  1. 1. 必读(50 个,大部分来自 Finished PEPs (done, with a stable interface) )
  2. 2. 选读(23 个)
|