双层装饰器
def outter(func):
def wrapper(*args, **kwargs): # wrapper是未来要运行的函数
# 此处加功能
res = func(*args, **kwargs) # func是被装饰的函数
return res
return wrapper
三层装饰器:给双层装饰器加参数的
def sanceng():
def outter(func):
def wrapper(*args, **kwargs): # wrapper是未来要运行的函数
# 此处加功能
res = func(*args, **kwargs)
return res
return wrapper
return outter
叠加装饰器
def outter1(func):
def wrapper(*args, **kwargs): # wrapper是未来要运行的函数
print('---------')
res = func(*args, **kwargs) # func是被装饰的函数
print('---------')
return res
return wrapper
def outter2(func):
def wrapper(*args, **kwargs): # wrapper是未来要运行的函数
print('***********')
res = func(*args, **kwargs) # func是被装饰的函数
print('***********')
return res
return wrapper
@outter1 # index = outter1(index)
@outter2 # index = outter2(index) # 先运行最下面的装饰器
def index():
print('index')
# index(重新定义的index) = outter2(index 真正的index)
index = outter2(index)
# index(再一次重新定义的index) = outter1(index重新定义的index)
index = outter1(index)
index()
标签:index,return,res,wrapper,模板,func,装饰,def
From: https://www.cnblogs.com/hanyingshuo/p/17797563.html