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

 

posted @ 2022-12-20 22:53  悟透  阅读(497)  评论(0)    收藏  举报