Python访问已定义变量出现NameError: name not defined报错如何解决
问题原因
- 你的
index1、index2变量仅在嵌套for循环内部的if l2 == from_previous[run_number-2]条件成立时才会被定义,只要运行时整个循环遍历过程中没有命中这个if判断,这两个变量就不会被创建,后续if语句调用时自然触发NameError。 - 即使你之前的代码块定义过这两个变量,如果当前逻辑分支下的for循环没有命中if条件,变量也会停留在旧值,若当前作用域从未定义过该变量就会直接报错。
解决方案
- 进入循环前先初始化两个变量,避免未定义问题
- 循环结束后先判断是否成功匹配到对应值,再执行后续逻辑
- 匹配成功后可加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
相关产品推荐
相关产品推荐

