今天我们来聊聊一种能给你的代码变得“加料”的神器——Python装饰器。
就像一杯咖啡,原本它是苦的,为了让它符合我的口味,我给它添加了糖,添加之后就完美的符合了我的口味。
那么,装饰器又是如何给代码进行“加料”呢?
Python装饰器提供了一个更为优雅的方式来增强现有函数的行为,并且不需要修改现有的函数代码及调用方式。
接下来通过一个案例来介绍一下装饰器的原理和实际的行为。
这里有一个函数,他就像一个勤劳的快递员,每次运行都送一次快递。
现在我们想知道它每次送快递需要多长时间,这时候装饰器就派上用场了,我们可以使用装饰器来给它添加计时的功能。
这是使用语法糖给函数添加装饰器的用法。
下面的部分称为原函数,上面的部分称装饰器函数,此时去调用原函数时,它除了会执行原本的功能外,还会执行装饰器给它添加的计时的功能。
这是装饰器最常见的写法,但它是怎么给函数增加新功能的呢?我们来看去除掉语法糖后装饰器的本来面目。
如果不使用语法糖,它本质上就是装饰器函数的一次调用,特殊的是它会将原函数作为参数传递给装饰器函数。而在装饰器函数中,它接收一个函数作为参数,并且在它的内部定义了一个新的函数,最后将新函数进行返回。在这里我们称timer decorator为外函数,称wrapper为内函数,而这个func就是原函数。
外函数将内函数名称进行返回并赋值为原函数的函数名,下面在调用原函数的函数名时,实际上调用的是内函数。
内函数被执行后,首先会记录当前时间,然后调用func,func是什么?是外函数的形参,这里可能有人会疑惑,外函数已经执行完了,为什么func还会存在呢?
这其实就是装饰器函数的立身之本:内函数所使用的外函数数据不会随着外函数的调用而销毁,所以此时func就指向了原函数,在调用内函数时,这里的func()可以去执行原函数,接着记录一下时间,最后通过差值得到执行函数所需要的时间。至此,通过装饰器我们不仅为原函数添加了新的功能,并且还没有修改其调用方式。
而语法糖的存在就是为了省略这一行代码,由此就形成了我们常见的装饰器了。
点击观看完整视频
一个例子带你了解Python装饰器到底在干嘛!!Python装饰器原理及作用详解来咯~_哔哩哔哩_bilibili一个例子带你了解Python装饰器到底在干嘛!!Python装饰器原理及作用详解来咯~, 视频播放量 215、弹幕量 0、点赞数 6、投硬币枚数 8、收藏人数 6、转发人数 0, 视频作者 小元实验室, 作者简介 人工智能、嵌入式 、物联网,核心知识梳理与总结,付费知识大放送, 少走99%弯路,就是最好的捷径!,相关视频:RFID在生活中无处不在,RFID技术的应用领域及工作原理是什么?一条视频告诉你~~,重发爆赞!李永乐老师深度讲解AI!带你了解电脑如何像人一样思考,带你学习AI前沿技术/人工智能/机器学习/深度学习/神经网络/计算机技术,草履虫都能学会!这可能是B站最全的(Python+机器学习+深度学习)系列课程了,入门巨简单学不会你打我!机器学习/深度学习/人工智能/python学习,【Python游戏】教你用20行Python代码,制作一个马里奥游戏,好玩到停不下来!!,什么是复位电路?外部复位和内部复位有什么区别,了解复位电路的基本介绍和工作原理5分钟就够了!,Python零基础入门到精通(2024最新版),【强推】这可能是B站最全的(Python+机器学习+深度学习)系列课程了!从入门到精通,通俗易懂,草履虫都能学会!(人工智能/机器学习/深度学习/python),在家用Python接单,昨天680,分享我的接单平台、接单技巧以及学习资源!!!,【全549集】这绝对是B站最全最细的零基础python全套教程,清华大佬专为零基础小白研制,7天学完即可进阶至大神!存下吧,很难找全了!,【附源码】Python自动答题脚本,100%正确率,期末考试再也不用担心挂科了!大学生考试神器,Python基础教程,代码爬虫,自动化办公https://www.bilibili.com/video/BV1fGHDepExY?t=1.2
人工智能体系课程:AI全栈工程师实战课
https://www.yyzlab.com.cn/package/info/1749620286278397953?code=66