在代码运行期间动态的增加功能,而不改变原代码的功能的方式称之为装饰器。
装饰器函数符合高阶函数,因为它传入的参数和返回值都是函数,它也符合嵌套函数。
代码示例:
def log(func): def warpper(*args,**kw): print('hello') return func() return warpper @log def func(): print( 'world') func()
执行@log--->log函数--->返回一个函数warpper--->调用func函数(实际执行的是warpper函数)--->调用原始函数func
1.执行装饰器函数的时候,被装饰函数当作参数传递给装饰器函数
2.装饰器函数的返回值会重新赋值给装饰器函数的内部函数,此时装饰器函数的参数指向由原先的被装饰函数变为装饰器函数的内部函数。
3.调用被装饰函数的时候,执行的是装饰器函数的内部函数的函数体