首页 > 解决方案 > 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 分支,但现在这无关紧要。

谢谢你的帮助!

标签: pythonfor-looppycharmundefinedbreak

解决方案


我想这是因为 foo 是在循环中定义的。如果您的列表 myNumbers 为空,则 foo 将未定义,因为循环的迭代次数为零。所以我猜,当提示 foo 未定义时,PyCharm (可能是故意)忽略了循环上方 myNumbers 的定义。


推荐阅读