def func(f): def inner(*args, **kwargs): print('1') ret = f(*args, **kwargs) print('2') return ret return inner @func def asd(bool): print('%s'%bool) return 'a' print(func.__name__) print(asd.__name__)
func
inner
__name__被调用为函数名(返回字符串)
如果是在装饰器里面,那么asd会被inner代替
解决这个问题
from functools import wraps def func(f): @wraps(f) def inner(*args, **kwargs): print('1') ret = f(*args, **kwargs) print('2') return ret return inner @func def asd(bool): print('%s'%bool) return 'a' print(func.__name__) print(asd.__name__)
__doc__被调用显示函数说明(返回字符串)
def asd(bool): '''这是asd函数''' print('%s'%bool) return 'a'
print(asd.__doc__)
这是asd函数