You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PEP 3107中生成器函数的正确类型注解关键词是什么?

生成器函数的正确类型注解(PEP 3107规范)

PEP 3107仅定义了函数注解的语法框架,具体的类型提示规范由PEP 484补充。针对带yield的生成器函数,正确的类型注解方式如下:

方式一:使用Generator类型

需要从typing模块导入Generator,它支持三个泛型参数:产出值类型、接收值类型、返回值类型。如果你的生成器不需要接收外部传入值,也没有明确的返回值,就把后两个参数设为None:

from typing import Generator

def this_function() -> Generator[int, None, None]:
    for x in range(0,100):
        yield x

方式二:使用Iterator类型

如果只关心生成器产出的元素类型,用Iterator[int]也是合规的,但必须先导入Iterator类型:

from typing import Iterator

def this_function() -> Iterator[int]:
    for x in range(0,100):
        yield x

Python 3.9及以上版本可以直接从collections.abc导入Iterator,无需依赖typing模块:

from collections.abc import Iterator

def this_function() -> Iterator[int]:
    for x in range(0,100):
        yield x

你之前写法无效的原因

  • 小写的generator不是Python标准的类型提示对象,Pylance无法识别,必须使用大写的Generator并完成导入。
  • 使用Iterator[int]没效果,大概率是遗漏了Iterator的导入语句,先检查导入是否正确。

内容的提问来源于stack exchange,提问作者PhoenixizFire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:52:09