当一个被装饰的对象同时叠加多个装饰器时
装饰器的加载顺序是:由下而上
装饰器的执行顺序是:由上而下
加载装饰器就是将原函数名与装饰器内部的wrapper函数进行偷梁换柱
执行装饰器实际上就是执行装饰器内部的wrapper函数。
我们来看下面这段代码
我们定义了两个装饰器:无参装饰器timmer与有参装饰器auth
我们用这两个装饰器去修饰index函数。让我们看看到底是发生了一件什么事
import time
def timmer(func):
def wrapper1(*args, **kwargs):
print('===================================>wrapper1运行了')
start = time.time()
res = func(*args, **kwargs)
stop = time.time()
print('run time is %s' % (stop - start))
return res
return wrapper1
def auth(engine='file'):
def xxx(func):
def wrapper2(*args, **kwargs):
print('============