python - PyCharm 提示“foo”可以是未定义的,但是如何定义呢?
问题描述
我在 PyCharm 中使用 Python 并遇到了一个奇怪的提示 IMO。
下面举一个简单的例子:
myNumbers = [0, 1, 2]
for val in myNumbers:
if val == 1:
foo = 1
break
else:
foo = 2
print "Foo is: ", foo
在最后一行,对于变量“foo”,PyCharm 说“名称 'foo' 可以是未定义的”。
我想知道为什么以及如何?在什么情况下会发生这种情况?
我知道特别是这个片段“foo”始终为 1,并且永远不会执行 else 分支,但现在这无关紧要。
谢谢你的帮助!
解决方案
我想这是因为 foo 是在循环中定义的。如果您的列表 myNumbers 为空,则 foo 将未定义,因为循环的迭代次数为零。所以我猜,当提示 foo 未定义时,PyCharm (可能是故意)忽略了循环上方 myNumbers 的定义。
推荐阅读
- css - 为什么行类使我的外部 div 适合大小
- php - Wordpress - 如何通过电子邮件向 4000 名订阅者发送通知
- plugins - 如何按规则将 Thunderbird 电子邮件导出到 .eml 文件到文件系统文件夹?
- python - 为什么在属性中执行逻辑而不是在 __init__ 中执行逻辑时会收到 TypeError?
- python - ParserError:为 csv 标记数据时出错
- powerbi - Power Query List.Generate 性能
- excel - SendKeys 函数正在跳过它应该输入的值中的括号
- python - 从python中的大型json文件中获取可读文本
- excel - 询问文件路径并从单个工作表中的多个工作簿复制特定数据
- javascript - 过滤所有键的数组的javascript对象