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 错误跟踪器上报告回归并等待修复。你的代码没有问题。
最近在 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 错误跟踪器上报告回归并等待修复。你的代码没有问题。