一.装饰器装饰多个函数
我们现在知道标准装饰器和带参数的装饰器,我们来看看多个装饰器装饰一个函数:
def wrapper1(func): def inner1(*args,**kwargs): print("这是装饰器一开始") func(*args,**kwargs) print("这是装饰器一结束") return inner1
def wrapper2(func):
def inner2(args,**kwargs):
print("这是装饰器二开始")
func(args,**kwargs)
print("这是装饰器二结束")
return inner2@wrapper1
@wrapper2
def func():
print("这是被装饰的函数")
func()
大家来推断一下,这个的打印结果
这是装饰器一开始
这是装饰器二开始
这是被装饰的函数
这是装饰器二结束
这是装饰器一结束
这个结果和我们想象的是不是不一样啊,这是为什么呢?
Python规定多个装饰器装饰一个函数的时候先执行离被装饰的函数最近的装饰器