装饰器
def auth(func): #func为被装饰的函数
def inner(*args,**kwargs):
print("前")
ret = func(*args,**kwargs)
print("后")
return ret
return inner
@auth
def index():
print("index")
@auth
def detail():
print("detail")
return "xxxxx"
print(index.__name__) #打印的函数名为inner
print(detail.__name__) #打印的函数名为inner
print(index()) #打印结果为 前 index 后 None index函数中没有return返回None
print(detail()) #打印结果为 前 detail 后 xxxxx 有return也要返回return的值
from functools import wraps def check_user(func): print("---1---") @wraps(func) def inner(*args,**kwargs): print("在被装饰函数之前做的事,判断等") ret = func(*args,**kwargs) print("在被装饰函数之后做的事,判断等") return ret return inner @check_user def test1(): print("123456789") return "你好呀" test1() # ---1--- # 在被装饰函数之前做的事,判断等 # 123456789 # 在被装饰函数之后做的事,判断等
from functools import wraps def check_user(func): print("---1---") @wraps(func) def inner(*args,**kwargs): print("在被装饰函数之前做的事,判断user等") ret = func(*args,**kwargs) print("在被装饰函数之后做的事,===") return ret return inner def check_token(func): print("---2---") @wraps(func) def inner(*args,**kwargs): print("在被装饰函数之前做的事,判断token等") ret = func(*args,**kwargs) print("在被装饰函数之后做的事,xxxx") return ret return inner @check_user @check_token def test1(): print("123456789") return "你好呀" test1() # ---2--- # ---1--- # 在被装饰函数之前做的事,判断user等 # 在被装饰函数之前做的事,判断token等 # 123456789 # 在被装饰函数之后做的事,xxxx # 在被装饰函数之后做的事,===