Python UnboundLocalError и назначение встроенных переменных - PullRequest
0 голосов
/ 05 апреля 2020

Вот метод, который возвращает метод, который при каждом вызове возвращает следующее число Фибоначчи (0, 1, 1, 2, 3, 5, ...).

def make_fib():
    j, k = 0, 1
    def fib():
        nonlocal j, k
        result = j
        j, k = k, j+k
        return result
return fib

Хотя вышеприведенное работает хорошо, если я разбиваю встроенное присваивание j и k различным присваиваниям, выдается UnboundLocalError: локальная переменная 'j', на которую ссылается перед присваиванием:

  def make_fib():
      j, k = 0, 1
      def fib():
          nonlocal j, k
          result = j
          j = k
          k = j+k
          return result
      return fib

Почему это так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...