装饰器装饰一个函数会改变函数的名字
def set_func(func):
def call_func(*args, **kwargs):
print('xx')
return func(*args, **kwargs)
return call_func
@set_func
def func_test():
print("func_test")
if __name__ == '__main__':
print(func_test.__name__)
方式一:
使用__name__重新赋值
def set_func(func):
def call_func(*args, **kwargs):
print('xx')
return func(*args, **kwargs)
call_func.__name__ = func.__name__
return call_func
@set_func
def func_test():
print("func_test")
if __name__ == '__main__':
print(func_test.__name__)
方式二:
使用functools.wrap()
import functools
def set_func(func):
@functools.wraps(func)
def call_func(*args, **kwargs):
print('xx')
return func(*args, **kwargs)
return call_func
@set_func
def func_test():
print("func_test")
if __name__ == '__main__':
print(func_test.__name__)