虽然 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 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 协议