Я пытаюсь научиться использовать декораторы в Python, но это сложная задача. Я сделал декоратор, который должен выполнять декорированную функцию указанное количество раз. Мне удалось создать код, который выполняет эту задачу:
def repeat(num_times):
def decorator_repeat(func):
def wrapper_repeat(x):
for _ in range(num_times):
func(x)
return wrapper_repeat
return decorator_repeat
@repeat(4)
def helloWorld(say):
print(say)
helloWorld("Hey everyone!")
Затем я попытался воспроизвести этот код еще раз, но на этот раз я использовал пока l oop вместо l oop как следует:
def repeat(num_times):
def decorator_repeat(func):
def wrapper_repeat(x):
while num_times > 0:
func(x)
num_times -= 1
return wrapper_repeat
return decorator_repeat
@repeat(4)
def helloWorld(say):
print(say)
helloWorld("Hey everyone!")
но теперь функция возвращает ошибку.
Traceback (most recent call last):
File "untitled.py", line 118, in <module>
helloWorld("Hey everyone!")
File "untitled.py", line 108, in wrapper_repeat
while num_times > 0:
UnboundLocalError: local variable 'num_times' referenced before assignment
Для меня эти функции должны работать одинаково, но это не так. Можете ли вы помочь мне понять, что не так с моим кодом?
Спасибо!