预期'collections.Iterable',取而代之的是Optional [list]

问题描述 投票:3回答:2

我今天在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是一个类型的联合?

list python-2.7 pycharm
2个回答
0
投票

Optional[list]是一个typing annotation,表示PyCharm发现mylistNonelist对象。

这似乎是由if mylist:测试引起的;我会说这是PyCharm在这里做出了不正确的推断,因为你明确地将mylist设置为list实例之前只有一行。 if测试空虚,而不是对象是None

这是一个错误,作为issue PY-21897提交给PyCharm项目,并在2017年的PyCharm中修复。


1
投票

如果你放置这样的东西:

""":rtype: list"""

在生成列表的函数的docstring中,应该让pycharm意识到你真的期待一个列表。

© www.soinside.com 2019 - 2024. All rights reserved.