首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何变得更加pythonic?——一份关于PEP的入门指南

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

作者头像
luanhz
发布2020-04-01 09:51:11
5040
发布2020-04-01 09:51:11
举报
文章被收录于专栏:小数志小数志

导读:如果你是一个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首页

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小数志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档