1- PEP简介

PEP是Python增强提案(Python Enhancement Proposal)的缩写。
社区通过PEP来给Python语言建言献策,每个版本的新特性和变化都是通过PEP提案经过社区决策层讨论、投票决议,最终确定的。
也就是说,PEP是各种增强功能和新特性的技术规格,也是社区指出问题、精确化技术文档、推动Python发展的提案。
一般情况下,可以将PEP视为Python语言的设计文档,包含了技术规范和功能的基本原理说明等。

2- PEP的类型及状态

每个PEP都有对应的类型及状态。

PEP的类型及标志(PEP Types Key)

  • S - Standards Track PEP :跟踪Python中的新特性,就是描述新功能。
  • I - Informational PEP :说明Python中的某一个设计问题,就是指导方针、共识等内容,比如Python之禅、Python新版本的时间表等。
  • P - Process PEP :关于Python的提案,但不针对Python语言本身,就是Python开发中使用的工具、流程或者环境的更改。

PEP的状态及标志(PEP Status Key)

  • 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 202 -- List Comprehensions"

在页面(https://www.python.org/dev/peps/pep-0202/), 可以看到此PEP的类型及状态信息。

此信息和PEP0(https://www.python.org/dev/peps/)中的对应信息是一致的

3- 阅读PEP

虽然通过阅读PEP可以深入了解Python,但并不意味着需要阅读所有的PEP文件。
比如不需要关注状态为A(Accepted)、D(Deferred)、R(Rejected)、S(Superseded)的PEP,甚至也不需要关注类型I(Informational)。
结合实际学习使用Python的需求,应多关注状态为F(Final)和类型为S(Standards Track)的PEP。

4- 应该知道的几个PEP

PEP 0

Index of Python Enhancement Proposals (PEPs):所有PEP的索引及分类。

PEP 1

PEP Purpose and Guidelines:PEP的目的和指南。

PEP 257

Docstring Conventions:指导如何规范书写文档说明(Docstring),提高代码的可维护性。

PEP 404

Python 2.8 Un-release Schedule:关于 Python2.8 版本号不存在的提案,Python2.7将成为Python2的终结版本号,所有的新特新将加入到Python3中。

PEP 8

Style Guide for Python Code:Python代码的规范和应该遵守的编码原则,也称为Python编码风格指南。

函数的风格

  • 将 class (类)里边的函数称作 method (方法)
  • 给函数命名的时候,与其命名成一个名词,不如命名为一个动词,作为给 class 的一个命令
  • 让函数保持简单小巧

类的风格

  • class应该使用 “camel case(驼峰式大小写)”
  • init 不应该做太多的事情,这会让class变得难以使用
  • 其它函数应该使用 “underscore format(下划线隔词)”
  • 用一致的方式组织函数的参数
  • 不要对全局变量或者来自模组的变量进行重定义或者赋值
  • 不要一根筋式地维持风格一致性
  • 使用class Name(object)的方式定义class

编码的目的是解决问题,而不是显露风格。

PEP20

The Zen of Python :在Python命令行终端执行“import this”将显示出关于Python编程的禅学。

 >>> import this
The Zen of Python, by Tim Peters Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>>

5- 一些需要了解的PEP

  • PEP 526 -- Syntax for Variable Annotations:指定变量的类型。
  • PEP 484 -- Type Hints :类型约束(类型提示),可以在函数、方法、类的参数和返回值声明其类型。
  • PEP 557 -- Data Classes :数据类特性,在Python3.7中加入。
  • PEP 309 -- Partial Function Application :关于偏函数。
  • PEP 318 -- Decorators for Functions and Methods :关于装饰器。
  • PEP 572 -- Assignment Expressions :关于表达式赋值的提案,在Python3.8中加入。
  • PEP 282 -- A Logging System :关于Logging标准库。
  • PEP 3101 -- Advanced String Formatting :字符串格式化。
  • PEP 3135 -- New Super :Python3中的super用法。
  • PEP 435 -- Adding an Enum type to the Python standard library :一种枚举类型。
  • PEP 380 -- Syntax for Delegating to a Subgenerator :引入“yield from”语法。
  • PEP 3156 -- Asynchronous IO Support Rebooted: the "asyncio" Module :引入异步I/O框架asyncio,提供了基于协程做异步I/O编写单线程并发代码的基础设施。
  • PEP 492 -- Coroutines with async and await syntax :引入async/await语法。
  • 。。。。。。

Python - 一些值得阅读的PEP的更多相关文章

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

    或许你是一个初入门 Python 的小白,完全不知道 PEP 是什么.又或许你是个学会了 Python 的熟手,见过几个 PEP,却不知道这玩意背后是什么.那正好,本文将系统性地介绍一下 PEP,与大 ...

  2. 嵌入式 十个最值得阅读学习的C开源项目代码

    开源世界有许多优秀的开源项目,我选取其中十个最优秀的.最轻量级的C语言的项目,希望可以为C语言开发人员提供参考. 十个最值得阅读学习的C开源项目代码 1. Webbench 2. Tinyhttpd ...

  3. 【伯乐在线】最值得阅读学习的 10 个 C 语言开源项目代码

    原文出处: 平凡之路的博客   欢迎分享原创到伯乐头条 伯乐在线注:『阅读优秀代码是提高开发人员修为的一种捷径』http://t.cn/S4RGEz .之前@伯乐头条 曾发过一条微博:『C 语言进阶有 ...

  4. 转: 最值得阅读学习的 10 个 C 语言开源项目代码

    from: http://www.iteye.com/news/29665 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同 ...

  5. 十个最值得阅读学习的C开源项目代码

    1. Webbench Webbench 是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以 模拟3万个并 ...

  6. Python的编码规范(PEP 8 & Google Python guide)

    PEP 8 Python 代码规范整理 click here Goole Python 风格指南 中文版 click here 大家有取舍的看吧. 因为文章不是原创的,所以只贴地址,给大家造成麻烦了, ...

  7. Python 爬虫 之 阅读呼叫转移(一)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/jcjc918/article/details/37533073     你是否苦恼于网上无法下载的& ...

  8. Python - 关于代码阅读的一些建议

    初始能力 让阅读思路保持清晰连贯,主力关注在流程架构和逻辑实现上,不被语法.技巧和业务流程等频繁地阻碍和打断. 建议基本满足以下条件,再开始进行代码阅读: 具备一定的语言基础:熟悉基础语法,常用的函数 ...

  9. 值得阅读的C语言开源项目代码

    本文地址:http://www.cnblogs.com/archimedes/p/c-opensource-project.html,转载请注明源地址. 本篇文章主要总结一些C开源项目,有些是很著名的 ...

随机推荐

  1. java编程高级进阶

    Java内存模型 对hadoop namenode -format执行过程的探究 intellij idea 高级用法之:集成JIRA.UML类图插件.集成SSH.集成FTP.Database管理 强 ...

  2. U-Mail企业邮箱如何导入授权文件

    首先,由于U-Mail有Linux版本与Windows版本的区别,并且都非常简单,所以就有了下面的步骤: Windows版本  <点击快速跳转> Linux版本 <点击快速跳转> ...

  3. cardlayout

    import javax.swing.*;import java.awt.*;import java.awt.event.*;public class demo_9{    public static ...

  4. MongoDB学习记录(三) - MongoDB的"增查改删"操作之"查"

    查找使用的方法: db.collection.find() 查找所有文档 db.collection.find({})或者db.collection.find({}) 指定键值对 db.collect ...

  5. wzyxidian Scanner 与 Readable 的read()方法

    Readable接口中的read()方法实现了将字符串读入charBuffer中,但是只有在需要输出的时候才会调用. Scanner是文本扫描器类,利用Scanner扫描并输出charBuffer中的 ...

  6. GitHub学习途径

    之前学习GitHub的一个pdf文件 作者是stormzhang 我觉得那个pdf教的很详细,我还没看完,正在学习中,学到了文件的clon和在本机如何更新GitHub的文件. 在此分享一下 下载链接h ...

  7. CentOS下安装Git

    在终端输入命令:yum install git,此时会进行提示安装,输入y, 在这种安装方式下,速度很快(windows系统下下载客户端速度超慢),当出现安装完毕时,就可以了. 安装完毕后输入git ...

  8. 2019.03.25 NOIP训练 匹配(match)(贪心)

    题意简述: 思路: 直接考虑把人和物品都看成二维平面上面的a,ba,ba,b两类点,然后一个aaa和bbb匹配的条件是xa≤xb&&ya≤ybx_a\le x_b\&\& ...

  9. Unity3D中AssetBundle应用

    工程中的模型等资源转化为Prefab后,打包成AssetBundle,可以大幅降低资源的空间占有度,并且提高资源加载的效率. 一.AssetBundle的打包 先看下打包Prefab的脚本代码,这段脚 ...

  10. [swarthmore cs75] Compiler 5 – Egg-eater

    课程回顾 Swarthmore学院16年开的编译系统课,总共10次大作业.本随笔记录了相关的课堂笔记以及第7次大作业. 抽象语法: 存储方式: 栈中的数据如果最后三位(tag bits)是001表示元 ...