PyCharm类型暗示古怪

jgr*_*tty 10 python for-loop pycharm python-3.x

  • PyCharm版本4.5.4

  • 使用Python 3.4.3

出于某种原因,我在PyCharm中看到了这个警告,看起来很奇怪.

预期'collections.Iterable',取而代之的是'range [int]'

此检查检测函数调用表达式中的类型错误.由于动态调度和鸭子打字,这在有限但有用的情况下是可能的.函数参数的类型可以在文档字符串或Python 3函数注释中指定.

for _ in range(x):
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是你可以写的最惯用的循环.

在此输入图像描述

Ter*_*edy 10

鉴于您的报告,这似乎是PyCharm中的一个错误.范围对象可迭代的,也是可迭代的.在3.4.3中:

>>> import collections
>>> x = 3
>>> isinstance(range(x), collections.Iterable)
True
Run Code Online (Sandbox Code Playgroud)

尝试向PyCharm人员报告此问题.

  • 它已经存在:https://youtrack.jetbrains.com/issue/PY-15038似乎需要特定的混音解释器设置.谢谢. (3认同)