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

Python访问已定义变量出现NameError: name not defined报错如何解决

问题原因
  • 你的index1、index2变量仅在嵌套for循环内部的if l2 == from_previous[run_number-2]条件成立时才会被定义,只要运行时整个循环遍历过程中没有命中这个if判断,这两个变量就不会被创建,后续if语句调用时自然触发NameError。
  • 即使你之前的代码块定义过这两个变量,如果当前逻辑分支下的for循环没有命中if条件,变量也会停留在旧值,若当前作用域从未定义过该变量就会直接报错。
解决方案
  1. 进入循环前先初始化两个变量,避免未定义问题
  2. 循环结束后先判断是否成功匹配到对应值,再执行后续逻辑
  3. 匹配成功后可加break终止循环,避免无效遍历和正确的index值被后续遍历覆盖
修改后代码示例
...
else:
    # 循环前先初始化变量
    index1 = None
    index2 = None
    for l1 in Xdisp_list:
        for l2 in l1:
            if l2 == from_previous[run_number-2]:
                index1 = wn_final.index(l1)
                index2 = wn_final[index1].index(l2)
                # 匹配到就跳出内层循环
                break
        # 内层循环匹配成功就跳出外层循环
        if index1 is not None:
            break
    # 先校验是否成功匹配,再执行后续逻辑
    if index1 is not None and index2 is not None:
        if w_ki - Xdisp_list[index1][index2] < delta:
            code_list_run.append(0)
    else:
        # 此处可添加未匹配到的处理逻辑,比如打印提示、赋默认值等
        print("未找到匹配的l2值")
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:48:01