小编典典

为什么会发生这个 UnboundLocalError

all

我在这里做错了什么?

counter = 0

def increment():
  counter += 1

increment()

上面的代码抛出一个UnboundLocalError.


阅读 61

收藏
2022-06-30

共1个答案

小编典典

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

counter += 1

隐式地使counter本地到increment().
但是,尝试执行此行将尝试在counter分配局部变量之前读取它的值,从而导致UnboundLocalError.
[2]

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

2022-06-30