学Python,怎能不懂点PEP?

作者: 云拾 | 来源:发表于2021-09-02 11:29 被阅读0次

    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

    参考

    相关文章

      网友评论

        本文标题:学Python,怎能不懂点PEP?

        本文链接:https://www.haomeiwen.com/subject/yoffwltx.html