如何为next()函数与生成器添加正确的Python类型提示?
解决PyCharm中
yield from的类型提示错误问题 你的代码里,PyCharm的类型提示错误地把next(range_itterable)的返回类型识别成了range,这是因为类型推断对yield from的处理存在局限。要让类型提示系统识别正确的返回类型,只需给生成器函数添加明确的返回类型注解:
修改后的代码
from typing import Iterator # Python 3.9+ 可改用 collections.abc.Iterator def range_iter(self, val: int) -> Iterator[int]: yield from range(val) range_itterable = range_iter(10)
说明
yield from range(val)会逐个产出range对象中的int类型元素,因此生成器的返回类型应该标注为产生int的迭代器(Iterator[int])。- 手动添加这个注解后,PyCharm的类型提示系统就能正确识别
next(range_itterable)的返回类型为int。
内容的提问来源于stack exchange,提问作者torrentails
相关产品推荐
相关产品推荐

