python装饰器报错

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

img

img

以下回答参考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 装饰器,计算函数运行时间,并输出运行时间信息。