PyCharm 类型警告 - 可迭代与 ValuesView/KeysView/ItemsView

PyCharm type warnings - Iterable vs ValuesView/KeysView/ItemsView

最近在 PyCharm(我不知道是哪个版本启动的,我目前是 运行 2021.2.3 Pro),我收到了没有意义的警告。

例如,这个片段:

d = {1: 2, 3: 4, 5: 6}
for v in d.values():
    print(v)

触发以下警告:

Expected type 'collections.Iterable', got 'ValuesView' instead

在上面的代码片段中,将 values() 替换为 keys() 会给出类似的警告。

顺便说一句,d.values() 的 return 值是 dict_values 而不是 ValuesView:

type(d.values())
<class 'dict_values'>

为什么 PyCharm 给我这个警告,而这一直是遍历字典的正确方法 keys/values?

这可能是 PyCharm 中的错误,但也许我遗漏了什么。


编辑: 即使示例代码在 https://docs.python.org/3.8/library/stdtypes.html#dict-views gets this warning, see screenshot.

这是 PyCharm 2021.2.3 linter 中已知错误的回归,请参阅 JetBrains 错误跟踪器上的 PY-41457

我使用之前的 PyCharm 2021.2.2 Pro 版本没有发生这种情况。

目前的解决方案是在 JetBrains 错误跟踪器上报告回归并等待修复。你的代码没有问题。