python装饰器一篇看懂

x33g5p2x  于2021-12-15 转载在 Python  
字(0.8k)|赞(0)|评价(0)|浏览(211)

很多同学都看到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】
(一定要私信哦~点击我的头像就能看到私信按钮了)

相关文章