让装了装饰器的函数的名字不是inner,而是原来的名字
from functools import wraps
def wrapper(func):
@wraps(func) # 复制了原来函数的名字和注释
def inner(request,*arg,**kwargs):
# 之前
ret = func(request,*arg,**kwargs)
# 之后
return ret
return inner
@wrapper # f1 = wrapper(f1)
def f1(request):
pass
f1.__name__ # inner _> f1 #让装了装饰器的函数的名字不是inner,而是原来的名字