我今天在Pycharm Community Edition 5.0.3中收到了这个错误,并且想知道它是否只是我做错了/没有意识到,或者它是否是PyCharm lint问题。重现错误的代码是
mylist = list()
# fill mylist, or do nothing here, either way the error persists
if mylist:
# if something in the list...
mylist.append(2)
else:
# list is empty, add something
mylist.append(1)
# warning at the loop here
for val in mylist:
print val
这是因为它认为mylist是一个类型的联合?
Optional[list]
是一个typing
annotation,表示PyCharm发现mylist
是None
或list
对象。
这似乎是由if mylist:
测试引起的;我会说这是PyCharm在这里做出了不正确的推断,因为你明确地将mylist
设置为list
实例之前只有一行。 if
测试空虚,而不是对象是None
。
这是一个错误,作为issue PY-21897提交给PyCharm项目,并在2017年的PyCharm中修复。
如果你放置这样的东西:
""":rtype: list"""
在生成列表的函数的docstring中,应该让pycharm意识到你真的期待一个列表。