我在这里做错了什么?
counter = 0 def increment(): counter += 1 increment()
上面的代码抛出一个UnboundLocalError.
UnboundLocalError
Python没有变量声明,所以它必须自己弄清楚变量的范围。它通过一个简单的规则来做到这一点:如果在函数内部对变量进行了赋值,则该变量被认为是本地的。[1] 因此,这条线
counter += 1
隐式地使counter本地到increment(). 但是,尝试执行此行将尝试在counter分配局部变量之前读取它的值,从而导致UnboundLocalError. [2]
counter
increment()
如果counter是全局变量,则global关键字会有所帮助。ifincrement()是一个局部函数和counter一个局部变量,可以nonlocal在 Python 3.x中使用。
global
nonlocal