很多同学都看到python代码中函数上有神奇的装饰器,那么什么是装饰器,他又能解决什么问题呢?
实际上装饰器的本质很多同学都已经学过了,那就是闭包。
闭包
闭包简单来说,就是闭包就是能够读取其他函数内部变量的函数(外部函数中嵌套一个内部函数,并引用了外部函数的变量)。可以将闭包的特性总结为三点:
(1)可以外部访问函数内部变量
(2)内部函数可以访问外层函数变量
(3)局部变量可以常驻内存
如上图案例中,在函数A中嵌套一个函数B,并且引用了函数A的变量x,这就是一个简单的闭包。
执行函数时也是按顺序执行,a=A(10)参数10传给A并将B的引用赋值给a,a(5)执行B(5)
需要注意的是返回函数B时不能加括号。
装饰器
装饰器的本质就是一个闭包,而且是更加简单方便的闭包使用方式,可以在不改变原有的函数结构上添加功能。
那么装饰器到底怎么使用呢?
咱们啊从实际使用角度出发,一切的概念和语法都是为了解决问题才出现的,比如甲方现在的需求就是要电子秤显示体重。
咱就不细写,简化一下,上面n就是体