使用装饰器会改变被装饰函数的名字
def login(func):
def inner(*args, **kwargs):
print('login')
return func(*args, **kwargs)
return inner
@login
def index(*args, **kwargs):
pass
print("func name : %s" % index.__name__)
# 输出 func name : inner
index函数的名字变成了inner,可以使用functools模块的wraps装饰保持原有函数名字
import functools
def login(func):
@functools.wraps(func)
def inner(*args, **kwargs):
print('login')
return func(*args, **kwargs)
return inner
@login
def index(*args, **kwargs):
pass
print("func name : %s" % index.__name__)
# 输出 func name : index