首页 > 解决方案 > Python 的 UnboundLocalError 和内联变量的赋值

问题描述

这是一个返回一个方法的方法,该方法每次调用都会返回下一个斐波那契数(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: local variable 'j' referenced before assignment:

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

这是为什么?

标签: pythonclosuresvariable-assignment

解决方案


推荐阅读