首页 > 后端开发 > Python教程 > 为什么我的 Python 代码在访问函数内的全局变量时会抛出'UnboundLocalError”?

为什么我的 Python 代码在访问函数内的全局变量时会抛出'UnboundLocalError”?

Mary-Kate Olsen
发布: 2024-12-23 03:35:14
原创
799 人浏览过

Why Does My Python Code Throw an

未绑定局部错误:局部变量 '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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板