python装饰器是对函数闭包的语法糖
一个函数的主要功能和辅助功能耦合在一起,不方便修改,容易出bug,所以需要将辅助功能从主要功能中抽离出来
闭包本质是一个函数,其参数和返回值都是函数,输入是一个函数,输出是一个增强函数
闭包函数的返回值是对传入函数进行增强后的结果
通过装饰器进行函数增强,只是一种语法糖,本质上还是闭包,装饰器在第一次被装饰函数时进行增强,装饰器是闭包更简单的写法
装饰器在函数第一次被调用前进行增强,并且只需要增强一次
对于含有返回值的函数,调用闭包增强后,不能成功返回,但是成功增强了辅助函数
对于含有参数的函数,调用闭包增强后,不能成功接收参数
解决办法是增强函数应该把接收到的所有参数传给原函数
语法糖对语法的功能没有影响,但是更方便程序员使用,没有增加新功能