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
# 在被装饰函数之后做的事,===