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

Python报UnboundLocalError本地变量赋值前引用错误如何解决

错误原因

核心问题出在每次循环末尾执行的del tmp语句,执行逻辑如下:

  • 第一次进入循环时,tmp有初始赋值,可正常参与运算
  • 第一次循环处理完成、执行完n.append(tmp)后,你直接删除了tmp变量
  • 进入下一轮循环需要读取tmp的值参与判断时,变量已经被销毁,自然触发UnboundLocalError变量未绑定的报错
    不管是用全局变量声明还是参数传入的写法,只要保留了del tmp语句,都会在第二轮循环时遇到找不到变量的问题,这和你用不用global、传不传参没有关系。
修复方案

直接删除代码中多余的del tmp语句即可,tmp变量会在每次循环中自动更新值,不需要手动销毁。

修正后可运行代码示例

a = list("100010")
b = list("1100011")
n = []
# 提前转成int,避免每次循环重复转义提升效率
tmp = int(b[0])

def test():
    global tmp
    for z in a:
        z = int(z)
        if z == 1:
            # 比特位翻转逻辑可直接简化为算术运算,无需if判断
            for y in b:
                tmp = 1 - tmp
        else:
            for y in b:
                tmp = int(y)
        n.append(tmp)

test()
print(n)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:24:03