一个简单的自增计数器示例:
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