当前位置: 首页 > Linux

学Python,怎么能不懂PEP呢?

时间:2023-04-06 06:49:37 Linux

也许你是Python新手,不知道什么是PEP。又或者你是学过Python的精通者,也看过几个PEP,但是你不知道这东西背后是什么。没错,本文将系统地介绍PEP,和大家一起加深对PEP的理解。目前国内教程种类繁多。虽然或多或少提到了PEP,但是一般的有很多,也有很多仅限于某个PEP。能详细全面介绍PEP的文章不多。这篇文章的目的是尽可能全面地介绍什么是PEP,告诉你为什么要阅读PEP,并列出一些我认为必须阅读的PEP。最后收集了几个PEP的中文翻译,希望能提供Python学习的汉化资料,做出一些贡献。什么是PEP?PEP的全称是PythonEnhancementProposals,其中Enhancement是增强和改进的意思,Proposals可以译为提案或提案,所以合在一起,比较常见的翻译是Python增强提案或Python改进提案。我个人倾向于前者的翻译,因为它更贴切。Python核心开发者主要通过邮件列表讨论问题、提议、计划等。PEP通常是对多方的信息进行汇总,经过一些核心开发者的审核通过,最终的正式文件起到了宣传的作用,所以我觉得翻译成“proposal”比较合适。PEP的官网是:https://www.python.org/dev/peps/,这是PEP0的地址,其他PEP的地址是后面拼接的数字,例如:https://www.python.org/dev/pe...是指向PEP20等的链接。第一个PEP出生于2000年,现在刚好18岁。到目前为止,它有478个“兄弟姐妹”。正式地,PEP分为三类:I-InformationalPEPP-ProcessPEPS-StandardsTrackPEP。比如PEP20(TheZenofPython,大名鼎鼎的Python之禅)、PEP404(Python2.8Un-releaseSchedule,声明不会有Python2.8版本)。进程类:这类PEP主要是Python本身之外的外围信息。比如PEP1(PEPPurposeandGuidelines,即关于PEP的指南)、PEP347(MigratingthePythonCVStoSubversion,即关于迁移Python代码仓库)。标准类:这类PEP主要描述Python的新功能和新实践(实现),提案数量最多。比如我之前推文《详解Python拼接字符串的七种方式》中提到的f-string方法就来自于PEP498(LiteralStringInterpolation,字面字符串插值)。每个PEP最初都是一个草案(Draft),然后会经过一个流程,所以会有不同的状态。以下是流程图:A–Accepted(仅标准跟踪)或ActiveproposalD–DeferredproposalDeferredproposalF–FinalproposalP–ProvisionalproposalR–RejectedproposalDeprecatedproposalS–SupersededproposalReplacedproposalW–Withdrawnproposal撤回提案在PEP0(IndexofPythonEnhancementProposals(PEPs))中,所有PEP的官方列表,您可以按序列号、类型和状态排序来检索。在PEP1(PEPPurposeandGuidelines)中,官方详细介绍了PEP的意图,如何提交PEP,如何修复和更新PEP,以及PEP审查的机制等。为什么要读PEP?无论您是Python新手、经验丰富的从业者,还是经验丰富的黑客,都应该阅读Python增强建议。在我看来,阅读PEP至少有以下好处:(1)了解Python有哪些特性,它们与其他语言特性的区别,为什么要设计这些特性,如何设计,以及如何更好地使用它们;(2)关注社区动态,了解行业最佳实践,调整学习方向,完善工作业务内容;(3)参与热点话题的讨论,或提交新的PEP为Python社区做贡献。毕竟,学习用Python编程只是触及表面。PEP提案是深入理解Python的途径,是真正掌握Python语言的关键,是让Python得心应手的指南。需要阅读哪些PEP?前面说过,已经积累了478个PEP提案,我们不需要熟悉每一个PEP,没有必要。下面,我列出了一些PEP,推荐您阅读:PEP0--IndexofPythonEnhancementProposalsPEP7--StyleGuideforCCode,CExtensionPEP8--StyleGuideforPythonCode,Python编码规范(必填)阅读)PEP20--TheZenofPython,ZenofPythonPEP202--ListComprehensions,列表生成PEP274--DictComprehensions,字典生成PEP234--Iterators,迭代器PEP257--DocstringConventions,文档注释规范PEP279--Theenumerate()内置函数,enumerate枚举PEP282--ALoggingSystem,日志模块PEP285--添加一个bool类型,布尔值(推荐阅读《Python对象的身份迷思:从全体公民到万物皆数》)PEP289--生成器表达式,生成器表达式PEP318--函数和方法的装饰器,装饰器PEP342--通过增强生成器的协程,协程PEP343--"with"语句,with语句PEP380--委派给子生成器的语法,yieldfromsyntaxPEP405--Python虚拟环境,虚拟环境PEP471--os.scandir()函数,遍历目录PEP484--类型提示,类型约束PEP492--具有异步和等待语法的协程,async/await语法PEP498--文字StringInterpolationPython,LiteralStringInterpolationPEP525--异步生成器,异步生成器PEP572--AssignmentExpressions,assignmentwithinexpressions(最有争议)PEP3105--Makeprintafunction,printischangedtofunctionPEP3115--MetaclassesinPython3000,metaclassPEP3120--使用UTF-8作为默认源encoding,defaultUTF-8PEP3333--PythonWebServerGatewayInterfacev1.0.1,WebdevelopmentPEP8000--PythonLanguageGovernanceProposalOverview,GvR父亲启动决策层后,与新的决策方案相关关于PEP,知乎有两个问题推荐大家关注:哪些PEP值得一读(https://dwz.cn/7CHMBlLu),如何查看PEP572的贡献(https://dwz.cn)/L46jpzMB)到PEP。我国的Python开发人员数量应该比其他任何国家都多。但是,翻看PEP0中列出的200多位PEP作者,我只看到了一个看起来像汉语拼音的中文名字(不排除是我漏了,或者用了英文名字)。反差太大了。我特别希望国内Python黑客的名字能越来越多的出现在那个榜单上,在Python核心开发者的榜单上。另外,还有一个非常有效的PEP投稿方式,就是将PEP翻译成中文,造福国内的Python学习社区。查找了一下,没有看到系统翻译PEP的项目,只是零星的翻译了某个PEP。我用心收集了几个中文翻译结果分享给大家:PEP8https://dwz.cn/W01HexFDPEP257https://dwz.cn/JLctlNLCPEP328https://dwz.cn/4vCQJpEPPEP333https://dwz.cn/TAXIZdzcPEP484https://dwz.cn/dSLZgg5BPEP492http://t.cn/EALeaL0PEP541https://dwz.cn/ce98vc27PEP3107http://suo.im/4xFESRPEP3333https://dwz.cn/si3xylgw最后,表达我的私心:(1)希望本文能给大家带来知识和见识的增长,激发部分小伙伴的学习热情。(2)希望有小伙伴多翻译PEP,造福Python中文学习社区---------------本文原发布于微信公众号【Python猫】,后台回复“爱学习”,送20+精选电子书。