python——装饰器问题2:如何保留被装饰函数的函数名和帮助信息文档

版权声明:©2004 Microsoft Corporation. All rights reserved. https://blog.csdn.net/qq_42036824/article/details/86567732

问题2:如何保留被装饰函数的函数名和帮助信息文档

  • @functools.wraps(fun)
    添加这个东西

  • print(con_add.doc)
    打印帮助文档如果没有帮助文档,则返回None

  • print(con_add.name)
    打印函数名

  • 错误做法:

def timeit(fun):
    #@functools.wraps(fun)   ##如果不添加返回的帮助文档和信息都是wrapper的函数名和信息文档
    def wrapper(*args,**kwargs):
        '''这是一个wrapper'''
        start_time = time.time()
        res = fun(*args,**kwargs)
        end_time = time.time()
        print('系统的运行时间为:%.6f' %(end_time - start_time))
        return res
    return wrapper

@timeit
def fun3(x):
    '''这是一个func3'''
    return x ** 2

print(fun3.__doc__)
print(fun3.__name__)

结果:
这是一个wrapper
wrapper
  • 正确做法:
def timeit(fun):
    @functools.wraps(fun)  ##为了保留被修饰的函数名和帮助信息文档
    def wrapper(*args,**kwargs):
        '''这是一个wrapper'''
        start_time = time.time()
        res = fun(*args,**kwargs)
        end_time = time.time()
        print('系统的运行时间为:%.6f' %(end_time - start_time))
        return res
    return wrapper

@timeit
def fun3(x):
    '''这是一个func3'''   ##如果没有帮助文档(函数的注释),则返回None
    return x ** 2
 
print(fun3.__doc__)
print(fun3.__name__)
结果:
这是一个func3
fun3

猜你喜欢

转载自blog.csdn.net/qq_42036824/article/details/86567732