首页 >后端开发 >Python教程 >为什么Python在修改函数内部的全局变量时会抛出'UnboundLocalError”?

为什么Python在修改函数内部的全局变量时会抛出'UnboundLocalError”?

Linda Hamilton
Linda Hamilton原创
2024-12-24 16:47:13864浏览

Why Does Python Throw an `UnboundLocalError` When Modifying a Global Variable Inside a Function?

UnboundLocalError:变量赋值优先于全局声明

在 Python 中遇到 UnboundLocalError 时,了解变量赋值相对于全局声明的优先级至关重要。让我们使用提供的代码深入研究具体细节:

a, b, c = (1, 2, 3)

def test():
    print(a)
    print(b)
    print(c)
    c += 1
test()

在探索错误之前,让我们先解决“a”和“b”的成功打印问题。对于这些变量,在 'test()' 函数中没有赋值,因此 Python 将它们视为全局变量,并从外部作用域中检索它们的值。

但是,当在内部为 'c' 赋值时函数('c = 1'),Python创建一个名为'c'的局部变量。此局部变量覆盖全局“c”,并且函数内对“c”的任何后续引用都将引用本地版本。因此,当执行“print(c)”行时,它会尝试打印未分配的局部变量,从而导致“UnboundLocalError”。

要解决此问题,可以显式声明使用全局变量通过添加“global c”作为第一行,在“test()”函数中添加“c”变量。或者,在 Python 3 中,“nonlocal c”可用于访问包含名为“c”的变量的最近的封闭函数作用域。

以上是为什么Python在修改函数内部的全局变量时会抛出'UnboundLocalError”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn