如何变得更加Pythonic?——一份关于PEP的入门指南

???? Python猫” ,一个值得加星标的公众号

花下猫语:我曾写过一篇较为详尽地介绍 PEP 的文章,后来因兴趣使然,陆续翻译过几篇,还在 Github 上建了个项目,也获得了小小的关注。前几天偶然又发现一篇介绍 PEP 入门的文章,特分享给大家!

来源:luanhz@小数志公众号

剧照 | 《小妇人》

导读:如果你是一个python初学者,那么可能听过编码规范这一说;如果你是一个python老鸟,那么可能知道有很多PEP文档,但可能也缺乏系统了解;如果你是一个python大神,那么请你参与到PEP制定进程当中……本文是一篇关于PEP的入门介绍,旨在让广大pythoners快速认识PEP。

01 何为PEP

PEP,全称Python Enhancement Proposal,一般译为python增强提案,是一套关于Python百科全书式指南,全面记载python版本升级的完整纪实,几乎所有python的疑问都能在PEP中予以解答或者至少找到参考——是的,这就是一份python白皮书。

2000年7月13日PEP0创建,至今刚好是第20个年头,已发展成为几百个PEP提案。其中,不仅仅是python编程规范标准,更全面记载了pythoners关于改进研发python的提议、讨论,还有python版本的更新周期计划,可以说无论是python入门初学还是资深极客,都能深飨其中、受益良多。

02 PEP信息介绍

一份PEP提案包括摘要和正文两部分,其中典型的摘要至少包括7个信息:分别是PEP编号、标题、最后修订日期、作者、状态、类型和创建日期,正文结构和内容则依不同PEP类型而异。

PEP0——关于PEPs的索引

简要介绍几个摘要信息字段:

  • PEP编号:PEP提案的文档序号,为1-4位数字。曾经试图从PEP编号来判断一份文档的类型,但后来发现这个编号几乎毫无规律可言,仅仅由其作者进行命名。

    虽然编号毫无规律(主要是按照创建时间先后顺序编号),但也有一些大的编号原则,例如:

    • PEP0-12,元PEP,关于PEP的PEP介绍

    • PEP200,python2.0版本

    • PEP3000-PEP3999,python3.0版本相关提案,其中PEP3000-3099又是python3000的元PEP

    • PEP8000+,python之父龟叔退出决策层后的决策进程

    PEP编号一旦指定则"终身"不能修改,即使是该提案废弃也不回收编号。另外,有的PEP编号也被保留以作未来使用,目前PEP801是唯一一个保留编号。

  • Status:状态,一份PEP文档从草案到生效直至废弃要经历多个状态,每个状态用其首字母缩略表示,其含义非常直观。包括:

    • Draft,草案,无缩略字母

    • 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文档一般是A状态和F状态,其次是D和P状态。当然,阅读其他状态的PEP文档也能拓展对python开发历程和大佬们思想斗争的了解。

  • Type:类型,PEP文档主要分为三类,

    • I - Informational PEP,资讯类

    • P - Process PEP,进程类

    • S - Standards Track PEP,标准类

    其中,标准类提案占比最大,涵盖了python语法、标准和编程规范的行为指南;资讯类用于宣布python的一些大的改进计划,如各个大版本发布前都会有一个Release Schedule(版本周期)的PEP;进程类,python之外的一些信息,例如:PEP 581 -- Using GitHub Issues for CPython。

03 阅读PEP渠道

查阅PEP官方文档的渠道主要有2种,一个是python官方主页,另一个是python GitHub仓库。

  • python官方主页,通过开发者指南(Python Developer’s Guide)链接可以跳转到PEP0索引页,进而可以通过目录查找所有PEP信息。

python官方主页中PEPs目录

官方主页中,给出了2种索引目录形式,一个是按分类索引,即按照PEP状态信息进行分类,例如Accepted、Finished等等;另一个是按照PEP编号索引,纯粹是按照编号序列进行排布。在每个索引目录中,可以通过类型和状态字缩写来迅速了解一份PEP文档状态,从而判断是否有必要阅读。

PEP596给出了python3.9版本周期

PEP597明确windows系统默认使用UTF-8编码

  • 另一个查阅PEP文档的渠道是python的官方GitHub仓库,与官方主页文档同步,如果是GitHub爱好者也可选择在这里查阅。

PEP仓库目前有288位贡献者、8294次提交

另外,除了python官方渠道,国内也有很多python爱好者将一些重要的PEP文档翻译成中文(包括GitHub上也有PEP汉译文档仓库),可供入门学习,只是目前数量还比较少。

04 必读PEP推荐

如果想变得更加pythonic,那么有些PEP几乎是必读的。以下列出了几个非常重要的PEP文档(排名区分先后)

  • PEP0,全面介绍PEPs

  • PEP8,python编程规范,详细介绍了一份可读性好的python程序应该具备怎样的编程规范

  • PEP20,python之禅,一共20条语句,可通过任何python终端输入"import this"打印显示,是python世界崇尚的方法论和价值观

  • PEP328,python模块导入规范,明确绝对/相对导入、多行导入的问题

  • PEP257,python文档注释规范

  • PEP3099,了解python3.0版本中那些被否决的提案,比如隐藏类方法中的self参数(类似其他语言中不显示给出)、重命名lambda匿名函数等等

  • Python x.x  Release Schedule,持续跟踪python版本最新进程

  • 其他感兴趣的python特性PEP文档

05 参与PEP提案

PEP不是开发者的专享,而是面向所有pythoners开放。在PEP1中给出了参与PEP制定的工作流程:

  • 在GitHub上Folk PEP仓库,创建一个草案(编号暂定为9999)

  • 选择PEP类型(资讯类、标准类、进程类),状态为Draft

  • 参照PEP12中的PEP书写规范,向官方仓库提交一个pull request

  • PEP编辑审阅提交的PEP文档

  • 一旦提交被接受,则分配一个正式的PEP编号,意味着在python改进升级的历史进程留下自己的足迹

当然,真正能成为PEP的一名作者并不容易,但倘若真的有兴趣也有实力,那么贡献一个PEP提案真是一件值得称耀的事情。

06 总结

本文面向python初学者对PEP进行基本介绍,包括PEP信息分类、查阅PEP渠道和几个必读PPE文档等信息,旨在使初学者尽快入门和学习PEP相关文档信息

  • PEP是python的一系列增强提案文档,始于2000年,全面涵盖各类python信息,包括版本计划、语法特性、编码风格规范等

  • PEP文档分为资讯、标准和进程3类提案

  • PEP文档具有时效性,其状态包括草案、临时、有效、替代和废弃等

  • PEP文档是提高对python理解和运用的不二选择

  • 任何pythoner都可以参与贡献PEP文档,如果被采纳值得称耀

注:点击阅读原本进入PEP首页

优质文章,推荐阅读:

学习Python,怎能不懂点PEP呢?

对比 C++ 和 Python,谈谈指针与引用

Python猫荐书之六:文也深度学习,理也深度学习

你真的知道Python的字符串怎么用吗?

感谢创作者的好文

发布了81 篇原创文章 · 获赞 21 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览