Python NameError: name 'is_flag' is not defined
NameError: name 'is_flag' is not defined
翻译:名字错误:名字‘is_flag’ 没有定义
意思是,你的 is_line 变量没有定义。你可能会说,我定义了呀。
那就看下面代码(下面代码主要关注 is_flag ,其他问题忽略)
1 2 3 4 5 6 7 8 9 10 11 12 | 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 。
下面是正确的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
分类:
Python & Jython
标签:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!