GPU|python装饰器一篇看懂


GPU|python装饰器一篇看懂

文章图片


GPU|python装饰器一篇看懂

文章图片


很多同学都看到python代码中函数上有神奇的装饰器 , 那么什么是装饰器 , 他又能解决什么问题呢?
实际上装饰器的本质很多同学都已经学过了 , 那就是闭包 。
闭包
闭包简单来说 , 就是闭包就是能够读取其他函数内部变量的函数(外部函数中嵌套一个内部函数 , 并引用了外部函数的变量) 。 可以将闭包的特性总结为三点:
(1)可以外部访问函数内部变量

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

(3)局部变量可以常驻内存
如上图案例中 , 在函数A中嵌套一个函数B , 并且引用了函数A的变量x , 这就是一个简单的闭包 。
执行函数时也是按顺序执行 , a=A(10)参数10传给A并将B的引用赋值给a , a(5)执行B(5)
需要注意的是返回函数B时不能加括号 。
装饰器装饰器的本质就是一个闭包 , 而且是更加简单方便的闭包使用方式 , 可以在不改变原有的函数结构上添加功能 。
那么装饰器到底怎么使用呢?
【GPU|python装饰器一篇看懂】咱们啊从实际使用角度出发 , 一切的概念和语法都是为了解决问题才出现的 , 比如甲方现在的需求就是要电子秤显示体重 。

咱就不细写 , 简化一下 , 上面n就是体重直接返回体重的数值就OK了 。
突然啊 , 就很突然 , 这个时候甲方需求变了 , 不行 , 要加上一个去衣服重量 , 美少女怎么可能160斤呢 , 一定是衣服太重 。
但是去皮功能 , 这样就要重新再原有的函数中跟改破坏原有的结构(虽然这个结构就一句话 , 但是不行 , 不能改) , 此时此刻就到了我们的主角装饰器的登场 。

相当的简单 。
当然了装饰器不止是函数 , 类也可以 , 我们看看使用类的效果吧 。
当然这本质上和函数闭包没有区别 , 依靠类方法的call来实现的直接调用 。

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