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开源项目,有些是很著名的 ...
随机推荐
- Dual Attention Network for Scene Segmentation
Dual Attention Network for Scene Segmentation 原始文档 https://www.yuque.com/lart/papers/onk4sn 在本文中,我们通 ...
- L2范数的相关求解
https://blog.csdn.net/u010725283/article/details/79212762
- 基于xposed实现android注册系统服务,解决跨进程共享数据问题
昨花了点时间,参考github issues 总算实现了基于xposed的系统服务注入,本文目的是为了“解决应用之间hook后数据共享,任意app ServiceManager.getService就 ...
- AX_RecordSortedList
static void RecordSortedList(Args _args) { SalesLine localSalesLine,fetchSalesLine; RecordSortedList ...
- Intellij IDEA环境配置RestEasy,SpringMVC+RestEasy
在SpringMvc中配置RestEasy,需要以下步骤 1.通过maven导入restEasy所需要的jar包 2.在web.xml文件中添加相应的配置. 3.编写服务. 具体步骤: 1.通过mav ...
- html中script标签的使用方法
向HTML页面中插入JavaScript的主要方法,就是使用<script>元素.这个元素由Netscape创造并在Netscape Navigator2中首先实现.后来,这个元素被加入到 ...
- Startls Back 引起的 win10升级之后的闪屏问题
win10 更新之后出现闪频问题. 有人说是和startls back 有关,需要卸载startls back, 但是进入安全模式下显示此 程序无法打开,无法卸载. 后来看到有人更新到startls ...
- 唉 调皮的ListView
唉 调皮的ListView 本次任务是 运用LisTView和自定义Adapter 来实现资料以列表的形式展现 来看代码 *** 布局代码老规矩 直接贴上 <LinearLayout andro ...
- CDR锁定方式
每个通道的PMA包括一个通道PLL可以配置成接收器CDR.还可以把通道1和4的PLL配置成CMU PLL用于发送器. CDR有两种锁定方式 1.Lock-to-Reference Mode(LTR) ...
- Codeforces Codeforces Round #484 (Div. 2) D. Shark
Codeforces Codeforces Round #484 (Div. 2) D. Shark 题目连接: http://codeforces.com/contest/982/problem/D ...