Python - 一些值得阅读的PEP
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的更多相关文章
- 学习 Python,怎能不懂点PEP 呢?
或许你是一个初入门 Python 的小白,完全不知道 PEP 是什么.又或许你是个学会了 Python 的熟手,见过几个 PEP,却不知道这玩意背后是什么.那正好,本文将系统性地介绍一下 PEP,与大 ...
- 嵌入式 十个最值得阅读学习的C开源项目代码
开源世界有许多优秀的开源项目,我选取其中十个最优秀的.最轻量级的C语言的项目,希望可以为C语言开发人员提供参考. 十个最值得阅读学习的C开源项目代码 1. Webbench 2. Tinyhttpd ...
- 【伯乐在线】最值得阅读学习的 10 个 C 语言开源项目代码
原文出处: 平凡之路的博客 欢迎分享原创到伯乐头条 伯乐在线注:『阅读优秀代码是提高开发人员修为的一种捷径』http://t.cn/S4RGEz .之前@伯乐头条 曾发过一条微博:『C 语言进阶有 ...
- 转: 最值得阅读学习的 10 个 C 语言开源项目代码
from: http://www.iteye.com/news/29665 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同 ...
- 十个最值得阅读学习的C开源项目代码
1. Webbench Webbench 是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以 模拟3万个并 ...
- Python的编码规范(PEP 8 & Google Python guide)
PEP 8 Python 代码规范整理 click here Goole Python 风格指南 中文版 click here 大家有取舍的看吧. 因为文章不是原创的,所以只贴地址,给大家造成麻烦了, ...
- Python 爬虫 之 阅读呼叫转移(一)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/jcjc918/article/details/37533073 你是否苦恼于网上无法下载的& ...
- Python - 关于代码阅读的一些建议
初始能力 让阅读思路保持清晰连贯,主力关注在流程架构和逻辑实现上,不被语法.技巧和业务流程等频繁地阻碍和打断. 建议基本满足以下条件,再开始进行代码阅读: 具备一定的语言基础:熟悉基础语法,常用的函数 ...
- 值得阅读的C语言开源项目代码
本文地址:http://www.cnblogs.com/archimedes/p/c-opensource-project.html,转载请注明源地址. 本篇文章主要总结一些C开源项目,有些是很著名的 ...
随机推荐
- rpm --rebuilddb
rpm -ivh .....rpm 报Bus Error rpm --rebuilddb
- tomcat 请求处理流程分析(基于nio)
在这里我先简单的说下bio和nio的区别 这里我以电话客服的情况来解释 bio 一个客户对应一个客服, 假如客户比较麻烦,中途不挂电话,或者去做其他事情了,而客服资源会被一直占用 导致的后果是系统处理 ...
- kettle连接oracle报错oracle.i18n.text.converter.CharacterConverter.OGS.getInstance(I)Loracle/i18n/text/converter/CharacterConverter
问题背景1:需要将一张excel中的数据导入到数据库中,并且还有关联转换和去重的处理问题,且此excel表不是固定的,需要写一个脚本 当新的excel拿来的时候,可以直接导入即可.所以我想用kettl ...
- 递归打印lua中的table
在lua中,table是比较常用的数据形式,有时候为了打印出里面的内容,需要做一些特殊处理. 废话不多讲,直接粘代码: print = release_print -- 递归打印table local ...
- PHP安装+使用
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4 ...... Extracting usr/local/php5-5 ...
- docker + spring boot 打包 部署。
docker 安装 什么的 就不一一介绍了 不会安装百度一找一堆. 我这直接上代码. 首先你要有个spring boot项目. 然后打包.打包很简单 我打包的是 jar文件.直接在pom.xml文件里 ...
- SpringCloud服务注册与发现
1.介绍对于微服务的治理而言,其核心就是服务的注册和发现.在SpringCloud 中提供了多种服务注册与发现组件:Eureka,Consul,Zookeeper.官方推荐使用Eureka. 说明:E ...
- JSP 前端的一些应用
Ext标签库 一.Ext.VeiwPort 代表整个浏览器显示区域,该对象渲染到页面的body 区域,并会随着浏览器显示区域的大小自动改变,一个页面中只能有一个ViewPort 实例. <scr ...
- azure cosmos db (mongo DB)
使用.net mongo的操作类操作azure(微软云)cosmosdb时,发现在做delete的操作的时候可以传一个文档对象,但是最后这个文档会解析成具体的sql语句,而当文档特别大时这样就出先了转 ...
- POJ 1067 威佐夫博弈
点这里去看题 套公式,判断是否为奇异组合 #include<stdio.h> #include<algorithm> #include<math.h> #inclu ...