首页 新闻 会员 周边

@functools.wraps

0
[已关闭问题] 关闭于 2026-06-10 14:53

函数的元数据信息丢了

doc: 文档说明,用来功能描述r

annotations: 类型标注,是个json格式,用来存储变量/参数/返回值的类型标记

复制代码
@timecount
def autodown(n: int) ->str:
    ''' some docs '''
    while n > 0:
        n -= 1

print(autodown.__name__)  wrapper
print(autodown.__doc__)     ''' some docs '''
print(autodown.__annotations__)  {'n': int, 'return': int}
复制代码

必须要将被装饰函数的元数据保留下来。可以使用functools模块中的wraps()装饰一下装饰器中的wrapper()函数

import time
from functools import wraps

def timecount(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(func.__name__, end - start)
        return result
    return wrapper
*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1802
提问于:2026-06-10 14:52
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册