一尘不染

Python-不明白为什么会发生unbundLocal错误

python

我这里哪里错了?

counter = 0

def increment():
  counter += 1

increment()

上面的代码抛出一个UnboundLocalError


阅读 489

收藏
2020-02-05

共1个答案

一尘不染

Python没有变量声明,因此它必须弄清楚变量本身的范围。它是通过一个简单的规则来做到这一点的:如果在函数内部对变量进行了赋值,则该变量被视为局部变量。[1] 因此,

counter += 1

隐式地使counter本地化increment()。不过,尝试执行此行将尝试counter在分配本地变量之前读取它的值,从而导致UnboundLocalError。[2]

如果counter是全局变量,则global关键字将有所帮助。如果increment()是局部函数和counter局部变量,则可以nonlocal在Python 3.x中使用。

2020-02-05