Область переменных в Python Decorator

У меня очень странная проблема в 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во внутренней функции, если я использую это в возвращении, но я не могу ничего с этим поделать. Это почему?

Ответы на вопрос(2)

Ваш ответ на вопрос