很多同学都看到python代码中函数上有神奇的装饰器,那么什么是装饰器,他又能解决什么问题呢?
实际上装饰器的本质很多同学都已经学过了,那就是闭包。
闭包简单来说,就是闭包就是能够读取其他函数内部变量的函数(外部函数中嵌套一个内部函数,并引用了外部函数的变量)。可以将闭包的特性总结为三点:
(1)可以外部访问函数内部变量
(2)内部函数可以访问外层函数变量
(3)局部变量可以常驻内存
如上图案例中,在函数A中嵌套一个函数B,并且引用了函数A的变量x,这就是一个简单的闭包。
执行函数时也是按顺序执行,a=A(10)参数10传给A并将B的引用赋值给a,a(5)执行B(5)
需要注意的是返回函数B时不能加括号。
装饰器的本质就是一个闭包,而且是更加简单方便的闭包使用方式,可以在不改变原有的函数结构上添加功能。
那么装饰器到底怎么使用呢?
咱们啊从实际使用角度出发,一切的概念和语法都是为了解决问题才出现的,比如甲方现在的需求就是要电子秤显示体重。
咱就不细写,简化一下,上面n就是体重,直接返回体重的数值就OK了。
突然啊,就很突然,这个时候甲方需求变了,不行,要加上一个去衣服重量,美少女怎么可能160斤呢,一定是衣服太重。
但是去皮功能,这样就要重新再原有的函数中跟改破坏原有的结构(虽然这个结构就一句话,但是不行,不能改),此时此刻就到了我们的主角装饰器的登场。
相当的简单。
当然了装饰器不止是函数,类也可以,我们看看使用类的效果吧。
当然这本质上和函数闭包没有区别,依靠类方法的call来实现的直接调用。
上面就是我自己在学习中对于python装饰器的一些浅薄的理解和运用拉,不过还是非常方便的使用起来也让代码简洁不少。
python福利教程领取方式:
1、点赞+评论(勾选“同时转发”)
2、关注小编。并私信回复关键字【19】
(一定要私信哦~点击我的头像就能看到私信按钮了)
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/MC_XY/article/details/121953449
内容来源于网络,如有侵权,请联系作者删除!