Python报错:UnboundLocalError

时间:2021-09-09 17:16:50

一个简单的自增计数器示例:

counter = 0

def increment():
  counter += 1

increment()

执行increment()报错:UnboundLocalError。

原因:

Python是是没有变量声明的,当在函数内赋值给变量,变量被认为是本地变量。所以会抛出UnboundError。

解决方法:

定义变量为global变量

counter = 0

def increment():
  global counter
  counter += 1

increment()

python3.x可以使用nolocal

def incrementer():
    counter = 0
    def increment():
        nonlocal counter
        counter += 1
        return counter
    return increment

increment = incrementer()

increment()   # 1
increment()   # 2