国产跑车
2022-01-16 11:45
采纳率: 0%
浏览 13

python 有参装饰器,装饰器参数无法被调用

我想编写一个控制程序调用频率的装饰器
def timer(step,duration):
    def wrapper(func):
        last_time = time.time()
        def inner(*args, **kwargs):
            global last_time
            global duration
            while duration >= 0:
                current_time = time.time()
                if current_time - last_time > step:
                    func(*args, **kwargs)
                    last_time = current_time
                    duration -= 1
                else:
                    pass
        return inner
    return wrapper

@timer(100, 10)
def func(x):
    x -= 1
    print(x)
    return x

func(100)

NameError: name 'duration' is not defined
试过将duration这个参数定义为全局变量,可还是无法调用
请问这是什么原因造成的,怎么解决?以后我该如何避免类似故障发生。
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题