1、问:装饰器的功能是什么?
答: 装饰器的功能是在函数原有的实现上,加一些拓展功能
2、问:装饰器的实现原理?
答:原理如下
我们来看看某些例子:
函数是有引用的,我们将fun1指向fun2函数 通过fun1也可以调用
上面我们提到,装饰器的目的是在原有的函数上进行功能性的拓展。其实python装饰器的实质就是 将函数引用作为参数传递给另一个函数,在另一个函数中调用该函数并进行其他功能的拓展后,再将另一个函数的引用赋值给该函数引用。
我们来看看下面的例子:
这就是装饰器的实现过程,我们前面提到,装饰器就是对函数功能进行拓展。
其实现是: 将一个函数引用作为参数传递给另一个函数,结合高阶函数的概念,将重新包装好的函数引用返回,再用该函数引用接收该返回值,这样就在原函数的基础上,进行了功能上的拓展。
上述实例 就是python装饰器的本质,python装饰器拥有自己的语法糖
如下:
运行结果依然是:
我们可以看到,fun1( )函数实现代码没有改变,依然通过fun1加括号来调用,但是使用了装饰器却在函数原有的功能上进行了拓展。这就是装饰器的意义所在。