作用:在不改变原来函数的代码情况下,进行修改,或者增加函数的功能装饰器本质上就是一个闭包雏形:def wrapper(fn): wrapper: 装饰器 , fn: 目标函数def inner():# 在目标函数执行前的一些动作fn()# 在目标函数执行后的一些动作return inner #千万别加(),这里是返回一个函数名。如果加(),表示返回函数执行的结果@wrapperdef fn(): #目标函数 print("xxxxxxx")功能:执行目标函数fn, 相当于执行了wrapper函数里闭包的inner函数过程
1. 装饰器方式一def lunch(fuc):def inner():print("water hand")fuc()print("su kou")return innerdef eat():print("eat somethings")lunch(eat) #这里返回是一个函数名inner,函数名在内存中指向一个地址
l = lunch(eat) # l 和 inner 同时指向同一个内存地址
l() #这里是执行inner函数体#执行结果
water hand
eat somethings
su kou
2.装饰器方式二def lunch(fuc):def inner():print("wa