python装饰器使用场景(python装饰器一篇看懂)

很多同学都看到python代码中函数上有神奇的装饰器,那么什么是装饰器,他又能解决什么问题呢?

实际上装饰器的本质很多同学都已经学过了,那就是闭包。

闭包

python装饰器使用场景(python装饰器一篇看懂)(1)

闭包简单来说,就是闭包就是能够读取其他函数内部变量的函数(外部函数中嵌套一个内部函数,并引用了外部函数的变量)。可以将闭包的特性总结为三点:

(1)可以外部访问函数内部变量

(2)内部函数可以访问外层函数变量

(3)局部变量可以常驻内存

如上图案例中,在函数A中嵌套一个函数B,并且引用了函数A的变量x,这就是一个简单的闭包。

执行函数时也是按顺序执行,a=A(10)参数10传给A并将B的引用赋值给a,a(5)执行B(5)

需要注意的是返回函数B时不能加括号。

装饰器

装饰器的本质就是一个闭包,而且是更加简单方便的闭包使用方式,可以在不改变原有的函数结构上添加功能。

那么装饰器到底怎么使用呢?

咱们啊从实际使用角度出发,一切的概念和语法都是为了解决问题才出现的,比如甲方现在的需求就是要电子秤显示体重。

python装饰器使用场景(python装饰器一篇看懂)(2)

咱就不细写,简化一下,上面n就是体重,直接返回体重的数值就OK了。

突然啊,就很突然,这个时候甲方需求变了,不行,要加上一个去衣服重量,美少女怎么可能160斤呢,一定是衣服太重。

但是去皮功能,这样就要重新再原有的函数中跟改破坏原有的结构(虽然这个结构就一句话,但是不行,不能改),此时此刻就到了我们的主角装饰器的登场。

python装饰器使用场景(python装饰器一篇看懂)(3)

相当的简单。

当然了装饰器不止是函数,类也可以,我们看看使用类的效果吧。

当然这本质上和函数闭包没有区别,依靠类方法的call来实现的直接调用。

python装饰器使用场景(python装饰器一篇看懂)(4)

上面就是我自己在学习中对于python装饰器的一些浅薄的理解和运用拉,不过还是非常方便的使用起来也让代码简洁不少。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页