You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python计时装饰器导致被装饰函数返回值变为None的问题求助

问题原因

你的装饰器里的wrapper函数最后只写了return,没有把被装饰函数执行得到的result返回出去。调用被装饰后的funky时,实际执行的是wrapper,它默认返回None,所以你拿到的就是None。原来无返回值的函数本身就返回None,因此没暴露这个问题。

修复方法

把wrapper里的return改成return result,就能把原函数的返回值传递出去了:

import time

def timing_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"Function {func.__name__} took {end_time - start_time:7.3f} seconds to run.")        
        return result  # 返回原函数的执行结果
    return wrapper

@timing_decorator   
def funky(p1,p2):
    return p1 * p2

print(funky(6,7))

运行这段代码,会先输出计时信息,然后打印出预期的42。

内容的提问来源于stack exchange,提问作者MikeDaFish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:03:36