未绑定局部错误:局部变量 'c' 遮蔽全局作用域
在 Python 中,理解函数内变量的赋值规则对于防止潜在的错误。当遇到“UnboundLocalError”时,有必要调查函数中分配的变量是否试图掩盖全局变量。
考虑以下代码:
a, b, c = (1, 2, 3) def test(): print(a) print(b) print(c) c += 1
执行此代码时,您将遇到源自“print(c)”行的错误。该错误消息通常表明在 test() 函数的本地范围内没有分配“c”变量。
要解决此错误,您需要了解 Python 根据位置不同地对待函数中的变量他们被分配了。如果您尝试为函数内的变量赋值,它就会成为局部变量。但是,在此代码中,您打算让“c”保持全局。
要声明 test() 函数中的“c”变量引用全局变量“c”,您必须显式使用“函数开头的“global”关键字:
def test(): global c print(a) print(b) print(c) c += 1
通过添加“global c”,Python 会识别出您打算使用全局“c”变量而不是本地变量。这允许您按预期打印和修改全局“c”变量。
作为 Python 3 中引入的新功能,您可以使用“nonlocal c”而不是“global c”来引用最近的封闭变量拥有“c”变量的函数作用域。然而,值得注意的是,在日常 Python 编码中使用“nonlocal”通常不太常见。
以上是为什么我的 Python 代码在访问函数内的全局变量时会抛出'UnboundLocalError”?的详细内容。更多信息请关注PHP中文网其他相关文章!