Python 中赋值之前引用的局部变量

Muhammad Waiz Khan 2021年4月29日
Python 中赋值之前引用的局部变量

本教程将说明为什么会发生错误 local variable referenced before assignment 错误,以及如何解决该错误。

在函数体内在赋值之前引用了某个变量时,就会发生 local variable referenced before assignment。该错误通常在代码尝试访问全局变量时发生。由于全局变量具有全局范围,并且可以从程序中的任何位置进行访问,因此用户通常会尝试在函数中使用全局变量。

在 Python 中,我们不必在使用变量之前声明或初始化该变量。默认情况下,始终将变量视为本地变量。因此,当程序尝试访问函数中的全局变量而未将其指定为全局变量时,代码将返回赋值之前引用的局部变量错误,因为被引用的变量被视为局部变量。

Python 中 local variable referenced before assignment 错误的解决方案

我们可以在 Python 中使用 global 关键字将变量声明为全局变量。一旦将变量声明为全局变量,程序就可以访问函数中的变量,并且不会发生任何错误。

下面的示例代码演示了程序最终将出现 local variable referenced before assignment 错误的代码情况。

count = 10

def myfunc():
    count = count + 1
    print(count)
  
myfunc()

输出:

UnboundLocalError: local variable 'count' referenced before assignment

我们需要使用 global 关键字将 count 变量声明为全局变量,以解决此错误。下面的示例代码演示了如何在上述代码方案中使用 global 关键字解决错误。

count = 10

def myfunc():
    global count
    count = count + 1
    print(count)
  
myfunc()

输出:

11