装饰器:高阶函数+嵌套函数(函数里面再定义一个函数)
前提:认清函数既是变量def 相当于定义函数名 = 函数体
本质:是一个函数
宗旨:1.不改变源代码下增加功能。
2.调用方式不变
Top1;装饰器的实质是函数哦。如下:
结果---》
结果
这是因为此装饰器中相当于f1 = decoration(f1)造成这样的结果
模板1.运行被装饰程序后仍可执行别的
模板2.low
Top2:
若函数有参数传入,应该设置可变参数和关键字参数 运行f2相当于:
f2 = wonder(f2) f2(‘dad’) = wonder(f2)(‘dad’) = deco(‘dad’)
Top3. 有时候不注意的时候回改变代码结果,如下:
这是因为line4 调用fun1时是fun1的return,不是deco的renturn
改成:区别在line 4 -line 6
Top4.
另一模板,可以选择的装饰效果,此时嵌套应该是三层,如下
The end