Python NameError: name 'is_flag' is not defined
NameError: name 'is_flag' is not defined
翻译:名字错误:名字‘is_flag’ 没有定义
意思是,你的 is_line 变量没有定义。你可能会说,我定义了呀。
那就看下面代码(下面代码主要关注 is_flag ,其他问题忽略)
def test():
    ## 定义全局变量
    global is_flag
    
    str = "aa"
    if str == "aa":
        print("aa")
        is_flag = True
    else:
        print("bb")
        
    print(is_flag)
-
    上面的代码意思,如果 str 里是 aa 那么,is_flag 就是 True,最后一行 print(is_flag) 也能正常打印出 True 也不会报错。
    假设,str = "bb" 呢? 就会去执行 else 里代码,到最后一行 print(is_flag) 就不能正常打印,因为此时 is_flag 没有赋值,就会报开头的错错。
    其实,写代码的时候就时想用 is_flag 先做个标记,但是忘了有可能走 else 分支,所以会出现这个 BUG 。
下面是正确的代码:
def test():
    ## 定义全局变量
    global is_flag
    
    str = "aa"
    if str == "aa":
        print("aa")
        is_flag = True
    else:
        print("bb")
        is_flag = False		## 加入这行就不会报错了。
        
    print(is_flag)
或者开始的时候就在 global 下给 is_flag 赋初值, is_flag = True
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号