年薪20万Python工程师之Python中10个必读的PEP提案方法-程序员宅基地

技术标签: python高效学习方法  Python  

什么是PEP

PEP 是 Python 增强提案(Python Enhancement Proposal)的缩写。社区通过PEP来给 Python 语言建言献策,每个版本你所看到的新特性和一些变化都是通过PEP提案经过社区决策层讨论、投票决议,最终才有我们看到的功能。写到这里,给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节

0、PEP8

如果你还不知道PEP8是什么,可能还算不上一位合格的Python程序员,PEP8是每个Python程序员必读的提案,Python虽然以简洁地的语法著称,但是并不意味着你就一定能写出简洁优雅的代码,PEP8风格指南定义了编写 Python 代码的规范和应该遵守的编码原则,我们在在编写代码的过程中都应该按照此规范约束我们的代码。每个开发者都应该多读几遍,做到了然于心。网上有各种版本的中译版,可选择性参考阅读。

有个通用的约定应该是可维护的、清晰可懂的、满足一致性的,同时也应该是好的编程习惯的基础。它不会违背你的意愿来强制要求你遵循那些规则。这就是Python!” — Tim Peter

地址:https://www.python.org/dev/peps/pep-0008/

1、PEP257

除了PEP8,还有PEP257是编写可维护代码的一份提案,指导程序员如何规范书写文档说明(Docstring) 的提案。我们知道Python是动态语言,动态语言的优点是代码简洁,但是缺乏约束性,所以很多时候需要通过文档说明来表达代码,提高代码的可维护性。

地址:https://www.python.org/dev/peps/pep-0257/
中译版:https://my.oschina.net/LuCastiel/blog/1552148

2、PEP20

说到Python里面隐藏的彩蛋,PEP20算得上一个,在Python终端导入this模块,有二十条(其实是19条)关于Python编程的禅学,还不看过的可以在Python命令行输入 import this 试试,讽刺的是,this 模块的源代码晦涩难懂,这也是从作者从侧面来说明代码可读的重要性。
地址: https://www.python.org/dev/peps/pep-0020/

 

image

3、PEP 557

PEP 557 是最近3.7中加入的新特性,叫做数据类(data class),此举也是让程序员写更少的代码,以前定义一个类,如果该类有很多属性的话,初始化时敲键盘手酸,比如以前一个类:

 

class RegularCard
    def __init__(self, rank, suit):
        self.rank = rank
        self.suit = suit

    def __repr__(self):
        return (f'{self.__class__.__name__}'
                f'(rank={self.rank!r}, suit={self.suit!r})')

    def __eq__(self, other):
        if other.__class__ is not self.__class__:
            return NotImplemented
        return (self.rank, self.suit) == (other.rank, other.suit)

那些魔术方法你全部要手动实现,现在不要了,你只要在类上面加一个装饰器@dataclass

 

from dataclasses import dataclass@dataclassclass DataClassCard:    rank: str    suit: str

它和上面的代码段是完全等价的,默认帮你实现了__init__等所有魔术方法。

地址:https://www.python.org/dev/peps/pep-0557/

4、 PEP 435

枚举在Python2中被认为是一个没用的东西,打脸的是社区觉得枚举还是有存在的必要,于是 PEP 435 就专门添加了一种枚举类型,话说,在现代编程中,没有枚举真的不能称之为一门完整的语言。

 

>>> from enum import Enum>>> class Color(Enum):...     red = 1...     green = 2...     blue = 3

地址:https://www.python.org/dev/peps/pep-0435/

5、 PEP 3156

PEP 3156 是Python 3.4 中引入异步I/O框架asyncio 的一个提案,提供了基于协程做异步I/O编写单线程并发代码的基础设施。随后在PEP492 中引入了 async/await语法 以及 PEP380中的yield from 语法,自此,Python有了原生的协程支持,不再依赖外部第三方库。

地址:https://www.python.org/dev/peps/pep-3156/

6、 PEP 484

Python是一门动态语言,所谓动态类型语言是指我们在定义变量,返回返回值的时候无需指定类型,解析器在运行的时候会自动判断其类型,某种程度上让代码变得更简洁,与此同时,带来的副作用就是在多人合作,bug定位和代码可读性等方面的不方面,所以前面介绍的 PEP257 就是通过文档来规范代码,但是文档是非强制性的,你不写对代码的运行一点影响也没有,所以 PEP 484 (Python3.5 引入)提出了从代码层面上加入了静态语言的部分特性—-类型提示(Type Hints),你现在可以在函数、方法、类的参数和返回值声明其类型。与之类似还有PEP526,不过是关于它是用来给变量指定类型的。

 

def greeting(name: str) -> str:    return "Hello, {}!".format(name)

现在你会明白,Java作为静态语言的优势了吧。

地址:https://www.python.org/dev/peps/pep-0484/

7、PEP 572

PEP 572 是关于表达式赋值的提案,语法是这样的:

 

while chunk := file.read(8192):   process(chunk)

该提案在社区争议性比较大,就是因为这个提案让 Python 之父愤然退出 Python 核心决策层,因为这个提案与社区其他成员产生了比较大的分歧。虽然Python之父不再是 BDFL,但是该提案最终还是被纳入到 Python3.8 中。

地址:https://www.python.org/dev/peps/pep-0572/

8、PEP 404

PEP 404 正如其名,一个关于 Python2.8 版本号不存在的提案,Python之父曾说过,如果Python3要兼容Python2,可能这个项目已经失败了,因为Python2有太多的历史包袱,所以Python2.7将成为Python2的终结版本号,所有的新特新将加入到Python3中。

地址:https://www.python.org/dev/peps/pep-0404/

9、 PEP 0

说到必看的 PEP,可能远不止我上面列的这些,于是有一个专门的PEP是用来索引所有PEP的集合。

地址:https://www.python.org/dev/peps/pep-0000/

还有哪些PEP是你值得一读的?写到这里,给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/QQ2352108083/article/details/105032128

智能推荐

tracepath 追踪路由信息 linux 命令_tracepath gateway-程序员宅基地

文章浏览阅读1.4k次。tracepath tracepath指令可以追踪数据到达目标主机的路由信息,同时还能够发现MTU值。它跟踪路径到目的地,沿着这条路径发现MTU。它使用UDP端口或一些随机端口。它类似于Traceroute,只是不需要超级用户特权,并且没有花哨的选项。tracepath 6很好地替代了tracerout 6和Linux错误队列应用程序的典型示例。tracepath的情况更糟,因为商用IP路由器在ICMP错误消息中没有返回足够的信息。很可能,当它们被更新的时候,它会改变 此命令的适用..._tracepath gateway

[UOJ46][清华集训2014]玄学-程序员宅基地

文章浏览阅读92次。uojdescription给出\(n\)个变换,第\(i\)个变换是将区间中\(l_i,r_i\)的数\(x\)变成\((a_ix+b_i)\mod m\)。每次会新增一个变换,或者查询询问如果进行编号\([s,t]\)的操作,第\(k\)个数会变成多少。\(n\le10^5,q\le6\times10^5\)sol二进制分组。按顺序把变化插入线段树,如果线段树的某个满了..._清华集训玄学

rk3368 用Chip ID生成Wi-Fi或者以太网MAC地址_rk3568 chip id-程序员宅基地

文章浏览阅读2.4k次。Platform: RK3368OS: Android 6.0Kernel: 3.10.0rk3368的Chip ID是从芯片eFuse中读取出来的。然后赋值给system_serial_low和system_serial_high./proc/cpuinfo中的Serial字段就是用的这两个值。arch/arm64/boot/dts/rk3368.dtsi efuse_256@ff..._rk3568 chip id

关于Guava-Retry重试工具的使用_guava retry demo-程序员宅基地

文章浏览阅读1.2k次。关于Guava-Retry重试工具的使用1 guava-retry的简介2 guava-retry的使用1 导入maven依赖2 添加一个重试方法3 添加测试类3 总结官网地址:https://github.com/rholder/guava-retryinghttps://codechina.csdn.net/mirrors/rholder/guava-retrying?utm_source=csdn_github_accelerator1 guava-retry的简介在日常的一些场景中, 很多_guava retry demo

The Leaky Integrate-and-Fire (LIF) Neuron Mode-LIF神经元模型-程序员宅基地

文章浏览阅读7.5k次,点赞10次,收藏45次。The Leaky Integrate-and-Fire (LIF) Neuron Mode基础知识_leaky integrate-and-fire

随便推点

嵩天老师python基础课程笔记-2_海龟编辑器绘制八角形-程序员宅基地

文章浏览阅读376次。文章目录第二周 Python基本图形绘制2.1 深入理解python语言2.2 实例2:python蟒蛇绘制2.3 模块1:turtle库的使用2.4 turtle程序语法元素分析2.1 深入理解python语言2.2 实例2:python蟒蛇绘制2.3 模块1:turtle库的使用2.4 turtle语法元素分析turtle八边形绘制turtle八角形绘制第二周 Python基本图形绘制2...._海龟编辑器绘制八角形

算法导论笔记(1)_假设一个n个记录中每个的关键字都介于1到k之间。说明如何修改计数排序,使得可以在-程序员宅基地

文章浏览阅读711次。习题5.3-5 从n^3个数字中进行放回抽样,共抽nci_假设一个n个记录中每个的关键字都介于1到k之间。说明如何修改计数排序,使得可以在

CATIA二次开发:CAA实现状态机_islastmodifiedagentcondition-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏6次。1.Command初始化:Agent、CATDialogState、Transition实现状态机Agent:CATPathElementAgent可获取元素;CATIndicationAgent可实现鼠标单击双击行为。CATDialogState状态机AddTransition状态机跳转条件:IsLastModifiedAgentCondition只要Agent变化就触发_islastmodifiedagentcondition

ant-design-pro项目开发全攻略(用这个做博客网站模板不要太快,一招鲜吃遍天)_ant+design+项目-程序员宅基地

文章浏览阅读6.6k次,点赞13次,收藏36次。打算做一个个人网站,新建umi项目的时候发现了ant-design-pro这个项目模板,打开一看貌似挺有用,记录一下一步步探索的开发攻略,包括如何修改主题内容、添加路由新页面,以及将md文档文件插入页面(用于博客网站制作)。_ant+design+项目

【MSYS2】Windows 无MSVC 安装 MinGW Clang_msys2安装clang-程序员宅基地

文章浏览阅读521次。【VSCode】Windows 无MSVC 安装 MinGW Clang | Clangdllvm-mingw-clang_msys2安装clang

排序算法的时间复杂度_排序算法 平均时间复杂度怎么计算-程序员宅基地

文章浏览阅读765次。各种排序算法时间复杂度各种排序算法比较 各种常用排序算法 类别 排序方法 时间复杂度 空间复杂度 稳定性 复杂性 特点 最好 平均 最坏 辅..._排序算法 平均时间复杂度怎么计算