在 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中文网其他相关文章!