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. laravel和lumen数据库链接错误_FatalErrorException Call to a member function connection

    FatalErrorException in Model.php line 3339: Call to a member function connection() on null 挺简单的一个lum ...

  2. rtx tiny os

    一,简单测试步骤: 1.  license management包含两项:artx51 real time os, PK51 2. code #include "rtx51tny.h&quo ...

  3. 使用SQL创建唯一索引

    使用sql语句创建唯一索引,格式如下: create unique index 索引名 on 表名(列名1,列名2……) 示例:在表GoodsMade_Labour的SID列上创建唯一索引IX_Goo ...

  4. 《Java并发编程的艺术》Java内存模型(三)

    Java内存模型 一.Java内存模型的基础 1.并发编程模型的两个关键问题: 两个关键问题,线程之间如何通信和如何同步.两种方式,共享内存和消息传递.Java里线程的通信是通过共享内存,线程的同步是 ...

  5. vs2015 不能启动 iis express

    删除以下目录的文件 <<path_to_solution_folder>>\.vs\config\applicationhost.config具体地址http://stacko ...

  6. 【Python】【BugList13】req = requests.get(url=target)报错: (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)')

    [代码] # -*- coding:UTF-8 -*- import requests if __name__ == '__main__': target = 'https://unsplash.co ...

  7. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...

  8. php中的问题整理

    1.什么是 CSRF 攻击 ?XSS 攻击?如何防范? CSRF,跨站请求伪造,攻击方伪装用户身份发送请求从而窃取信息或者破坏系统.讲述基本原理:用户访问A网站登陆并生成了cookie,再访问B网站, ...

  9. go语言的运算符

    什么是运算符:运算符用于在程序运行时执行数学或逻辑运算 go语言的运算符如下: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 一,算数运算符 运算符 描述 实例 + 相加 A ...

  10. git操作之git clean删除一些没有git add的文件

    删除 一些 没有 git add 的 文件: git clean 参数 -n 显示 将要 删除的 文件 和  目录 -f 删除 文件,-df 删除 文件 和 目录