📜  UnboundLocalError:局部变量 (1)

📅  最后修改于: 2023-12-03 14:48:09.852000             🧑  作者: Mango

关于 UnboundLocalError

简介

UnboundLocalError 是 Python 中常见的错误之一。当尝试访问一个函数内的局部变量,但该变量未被初始化或赋值时,就会抛出该错误。

示例
def foo():
    print(x)
    x = 1

foo()

运行上述代码会抛出 UnboundLocalError,因为函数内的变量 x 在使用前未被初始化。

原因

在 Python 的函数中,所有赋值语句都会将变量解释为局部变量。如果在该函数中对未初始化的局部变量进行访问,则会抛出 UnboundLocalError。

x = 1

def foo():
    print(x)
    x = 2

foo()

运行上述代码同样会抛出 UnboundLocalError。这是因为函数中的 x 被解释器认定为局部变量,不会与全局变量 x 发生重叠,因此在使用前需要被初始化。

解决方案

避免 UnboundLocalError 的方法是在函数执行前,对所有局部变量进行初始化或赋值。如果在函数执行期间需要修改全局变量,则应在赋值语句中使用 global 关键字。

x = 1

def foo():
    global x
    print(x)
    x = 2

foo()
print(x) # 输出 2
总结

UnboundLocalError 是 Python 中常见的错误之一,表示访问一个未被初始化或赋值的局部变量。避免该错误的方法是对局部变量进行初始化或赋值,并在需要修改全局变量时使用 global 关键字。