根据PEP-484,我们应该能够按如下方式键入暗示生成器函数:
from typing import Generator
def generate() -> Generator[int, None, None]:
for i in range(10):
yield i
for i in generate():
print(i)
然而,列表理解在PyCharm中给出了以下错误。
Expected 'collections.Iterable', got 'Generator[int, None, None]' instead less... (⌘F1)
你知道为什么皮查姆认为这是个错误吗?谢谢您。
在阅读了一些答案后进行了一些澄清。我正在使用PyCharm社区版2016.3.2(最新版本),并已导入typing.Generator
(在代码中更新)。上面的代码运行得很好,但是PyCharm认为这是一个错误:
所以,我想知道这是否是PyCharm中的一个错误或不支持的功能。
正如Oleksandr Dashkov所评论的,我用Pycharm 2017.1eap尝试了相同的代码,它正确地处理了这个注释。我想这个功能将被整合到下一个正式版本的PyCharm中。谢谢大家。
您需要导入
typing
模块。根据文件:请改为这样做:
以上将得到所需的结果:
输出:
正如评论中指出的,您可能不会使用PyCharm的最后一个版本。尝试切换到2016.3.2版本,您可能会没事。不幸的是,根据@AshwiniChaudhary的评论,这是一个众所周知的bug。
此外,报告的问题(为最后一个版本的PyCharm)是在去年12月提交的。他们可能修复了它,并将修改推到了同一版本中。
相关问题 更多 >
编程相关推荐