You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在函数中使用其他函数变量时遇UnboundLocalError问题求助

解决UnboundLocalError:即使使用global仍报错的问题

嘿,我猜你大概率是在函数里先引用了变量,再声明global,这就是问题所在!让我给你拆解一下:

先看你可能写出的错误代码

a = 1

def update_a():
    print(a)  # 这里先引用了a
    global a  # 后声明global
    a = 2

update_a()

运行这段代码就会触发你遇到的错误:UnboundLocalError: local variable 'a' referenced before assignment

为什么会报错?

Python的作用域规则是这样的:当函数内部存在对变量的赋值操作(比如这里的a = 2),Python会默认把这个变量标记为局部变量——不管你后面有没有加global声明。

在上面的错误代码里,print(a)先执行时,Python已经认定a是局部变量,但此时还没给它赋值,自然就报错了。global声明必须在函数内第一次使用这个变量之前,才能让Python知道你要操作的是全局变量。

正确的写法

把global声明放在函数内所有对a的引用之前:

a = 1

def update_a():
    global a  # 先声明要使用全局变量a
    print(a)  # 现在引用的是全局变量
    a = 2

update_a()
print(a)  # 输出2,符合你的预期

额外提醒

如果是在嵌套函数里修改外层函数的变量(不是全局变量),那你需要用nonlocal关键字而不是global,别搞混了哦!

内容的提问来源于stack exchange,提问作者newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:30:32