dionobread_ 2023-05-08 12:35 采纳率: 100%
浏览 20
已结题

python装饰器报错

我想要使用装饰器统计函数运行时间时发生报错ValueError: myDecisionTree() requires a code object with 0 free vars, not 1
请问该如何解决呀

img

img

  • 写回答

1条回答 默认 最新

  • Bony- 2023-05-08 13:34
    关注

    以下回答参考GPT并且由Bony-整理:
    该报错通常是由于装饰器函数定义时没有加上 *args**kwargs 参数导致的。为了避免出现这个问题,可以在定义装饰器时使用 *args**kwargs 参数,示例如下:

    import time
    
    def timer(func):
        def wrapper(*args, **kwargs):
            start_time = time.time()
            result = func(*args, **kwargs)
            end_time = time.time()
            print(f"函数 {func.__name__} 运行时间为 {end_time - start_time} 秒")
            return result
        return wrapper
    
    @timer
    def myDecisionTree():
        # your code here
    

    这样,在调用 myDecisionTree() 时就会自动调用 timer 装饰器,计算函数运行时间,并输出运行时间信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月8日