python装饰器的本质
函数闭包的语法糖
1、函数闭包
输出0-100之间所有奇数,并统计执行时间
方案一:函数逻辑和辅助功能耦合在一起
方案二:将辅助功能抽离成辅助函数,在辅助函数中调用主要功能函数,主要函数名作为参数
方案三:通过闭包增强主要功能函数,增加一个统计时间功能,需要显式进行闭包增强
方案四:将显示增强变为隐式增强,通过装饰器进行函数增强,本质上是闭包
2、函数闭包
本质上是一个函数;参数和返回值都是函数;闭包函数的返回值函数是对传入函数进行增强后的功能
- 用于增强函数功能
- 面向切面编程
3、语法糖
某种语法;没有增加新功能,只是方便使用;可以完全等价原本非语法糖写法
4、讨论参数和返回值
返回值:
参数:
最终完整版:
5、装饰器
多个装饰器,输出结果