# 装饰器相关 def auth(func): def inner(*args,**kwargs): return func(*args,**kwargs) return inner @auth def login(): pass print(login.__name__) # inner
# 使用functools,虽然执行的还是inner函数,但名字不叫inner import functools def auth(func): @functools.wraps(func) def inner(*args,**kwargs): return func(*args,**kwargs) return inner @auth def login(): pass @auth def index(): pass print(login.__name__) # login print(index.__name__) # index
1 # 一个函数可以被多个装饰器装饰 2 # 先执行离他最近的装饰器, 3 4 import functools 5 6 def auth0(func): 7 print("00000000000") 8 @functools.wraps(func) 9 def inner(*args,**kwargs): 10 return func(*args,**kwargs) 11 return inner 12 13 def auth1(func): 14 print("1111111111111111111") 15 @functools.wraps(func) 16 def inner(*args,**kwargs): 17 return func(*args,**kwargs) 18 return inner 19 20 @auth0 21 @auth1 22 def index(): 23 pass
