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