当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python typing.Generator用法及代码示例


用法:

class typing.Generator(Iterator[T_co], Generic[T_co, T_contra, V_co])

生成器可以由泛型类型 Generator[YieldType, SendType, ReturnType] 注释。例如:

def echo_round() -> Generator[int, float, str]:
    sent = yield 0
    while sent >= 0:
        sent = yield round(sent)
    return 'Done'

请注意,与类型模块中的许多其他泛型不同,GeneratorSendType 的行为是逆变的,而不是协变或不变的。

如果您的生成器只会产生值,请将 SendTypeReturnType 设置为 None

def infinite_stream(start: int) -> Generator[int, None, None]:
    while True:
        yield start
        start += 1

或者,将您的生成器注释为返回类型为 Iterable[YieldType]Iterator[YieldType]

def infinite_stream(start: int) -> Iterator[int]:
    while True:
        yield start
        start += 1

自 3.9 版后已弃用:collections.abc.Generator现在支持[].看PEP 585通用别名类型.

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 typing.Generator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。