学Python,不懂一点PEP,谁都不愿意和你一起开发!

或许你是一个初入门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 PEPP - Process PEPS - 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),是数量最多的提案。例如我之前提到过的f-string方式,它出自PEP 498(Literal String Interpolation,字面字符串插值)。

每个PEP最初都是一个草案(Draft),随后会经历一个过程,因此也就出现了不同的状态。以下是一个流程图:

PEP process flow diagram

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,布尔值(建议阅读《Python对象的身份迷思:从全体公民到万物皆数》)

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,知乎上有两个问题,推荐大家关注:哪些PEP值得阅读(https://dwz.cn/7CHMBlLu),如何看待PEP 572(https://dwz.cn/L46jpzMB)。

对PEP的贡献

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

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

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

我用心搜集了几篇中文翻译成果,分享给大家:

PEP8 -- https://dwz.cn/W01HexFD

PEP257 -- https://dwz.cn/JLctlNLC

PEP328 -- https://dwz.cn/4vCQJpEP

PEP333 -- https://dwz.cn/TAXIZdzc

PEP484 -- https://dwz.cn/dSLZgg5B

PEP492 -- http://t.cn/EALeaL0

PEP541 -- https://dwz.cn/ce98vc27

PEP3107 -- http://suo.im/4xFESR

PEP3333 -- https://dwz.cn/si3xylgw

最后,表达一下我的私心:

(1)希望本文能给大家带来知识和见识的增长,激发一些小伙伴的学习热情

(2)希望有小伙伴去翻译更多的PEP,造福Python中文社区

原文地址:https://www.cnblogs.com/520lmx/p/10237871.html

时间: 2024-10-10 21:03:01

学Python,不懂一点PEP,谁都不愿意和你一起开发!的相关文章

学python的一点感想

之前对python一点都不了解,选课的时候犹豫了好半天才选了它,然后就越发好奇会怎么上课.有没有趣,期待了一个暑假.果然没有让我失望,第一次上课,通过听老师对python的介绍,我对python产生了很多好感,又听老师提起我们会怎么样实践,就更兴奋了,还发现有很多大佬也选了这课--以上这些都让我觉得这课选得真值. 我专业和python没有什么关系,平时几乎没接触过编程语言,更别说python.在前两周学习.探索的过程中,我发现编程是没意思(这点以后可能会变),但是python很有趣,越来越喜欢它

他学习一年Python找不到工作;背后肯定是有原因的;大佬都说你别再学Python了!

引言: 都说,滴水穿石非一日之功.然而有些人即使奋斗一辈子也比不上别人一年,别人学习一年比不得你学习一个月.其中缘由,有些人看了大半辈子还没看明白. 即使Python这么火,为何你学习一年的Python还找不到工作? 我认为有以下四点非常关键: 1,功利心强: 急需赚钱之人,所以才会着重强调"赚钱"这个字眼.如果越是功力心强,进取心弱,越着急学,越学不明白. 2,基础薄弱: Python编程零基础的人,或者是基础十分薄弱之人,所在的工作岗位应该也涉及不到计算机编程,那么也许你也许还是一

Python入门很难吗? 为什么越来越多的人都学Python?

Python都说是最容易学习的编程语言,但是为什么还是有很多的小白在学习的过程中学的云里雾里,一天到晚都是报错,异常,这也怪不得会有那么多人说,学Python是从入门到入土!其实一门编程语言不像语文那样.靠死记硬背就行了的,他是需要结合实战加上自己所掌握的知识来实现一个程序,这样学起来才有成就感,才能感觉学习编程语言不会枯燥!推荐下小编的Python学习群:629440234,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的Python和0基础入门教程,欢

Python 速学!不懂怎么入门python的小白看这篇就够了!

Python是一种非常流行的脚本语言,而且功能非常强大,几乎可以做任何事情,比如爬虫.网络工具.科学计算.树莓派.Web开发.游戏等各方面都可以派上用场.同时无论在哪种平台上,都可以用 Python 进行系统编程. 机器学习可以用一些 Python 库来实现,比如人工智能常用的TensorFlow.也可以用像 NLTK 这样的 Python 库进行自然语言处理(NLP). 本文讨论基本的 Python 编程,后续会写一些 Python 编程的实际案例. 大家在学python的时候肯定会遇到很多难

学python的第一天

#Python之路,Day1 - Python基础1 转自金角大王 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆

运维新手们,别再问需不需要学PYTHON了!!!

经常有人在群里问,运维人员需不需要学开发?需不需要学PYTHON?PYTHON和SHELL有什么区别?天天问这种好水的问题,我实在受不了,决定帮大家扫扫盲,求求新手们,以后别他妈瞎问了.现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能,不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试.优化开发人开发的程序,开发人员有的时候很少关注性能的问题,这些问题就得运维人员来做,一个业务上线了,导致CPU使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用

这本Python入门畅销书《“笨办法”学python 3》,不仅仅是一本书

此前,小编分享过一篇文章<跟着数百万人编程导师学C语言!>,介绍的是泽德 A. 肖大神的新书<"笨办法"学C语言>很多用户在后台留言,<"笨办法"学Python 3>什么时候出版?今天这本书终于在六月初与大家见面啦,与作者其他的图书风格一样,<"笨办法"学Python 3>也不仅仅是一本书,随书附赠5个多小时充满激情的视频,这是一套完整的Python语言视频课程! 纯正的美式发音,中文字幕,边看边练

Python自学之旅 #新手#MacBook #《“笨办法”学Python》#第六章:常用的简易Python命令、符号、代码、格式化字符串

第六章:常用的简易Python命令.符号.代码.字符串 <“笨办法”学Python>这本书中,确实用了较多篇幅来介绍Python的一些常用简单的命令.符号.代码和字符串等,对于像我这样的自学新手,真的是非常棒,因为它们可以帮我建立接着学下去的信心和兴趣.但我在这个系列的博客当中,不打算写的这么精细,首先因为这不符合我写博的初衷和习惯,其次因为我不打算靠这写书来挣钱,最后因为我确实没有那个实力去挖掘简单东西中更深奥复杂的应用.所以,我写的这个博客,只适合像我这样的自学新手,如果想要成为大神,还是

小白学 Python 爬虫(27):自动化测试框架 Selenium 从入门到放弃(上)

人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基