У меня очень странная проблема в декораторе Python 3.
Если я это сделаю:
def rounds(nr_of_rounds):
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
return nr_of_rounds
return inner
return wrapper
он работает отлично. Однако, если я это сделаю:
def rounds(nr_of_rounds):
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
lst = []
while nr_of_rounds > 0:
lst.append(func(*args, **kwargs))
nr_of_rounds -= 1
return max(lst)
return inner
return wrapper
Я получаю:
while nr_of_rounds > 0:
UnboundLocalError: local variable 'nr_of_rounds' referenced before assignment
Другими словами, я могу использовать nr_of_rounds
во внутренней функции, если я использую его в возврате, но я не могу с ним ничего сделать. Почему это?