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
标签:aa,Python,else,NameError,flag,str,print,True From: https://www.cnblogs.com/wutou/p/16995304.html