Python的PEP 484类型注释用于Generator Expression

问题描述 投票:3回答:1

返回generator expression的函数的正确类型注释是什么?

e.f.:

def foo():
    return (x*x for x in range(10))

我无法弄清楚这是-> Iterator[int]-> Iterable[int]-> Generator[int, None, None]还是别的什么。

如果应该有一个 - 最好只有一个 - 显而易见的方法,那么这里显而易见的方法是什么?

python generator yield type-hinting
1个回答
3
投票

您提到的所有三种形式都列为valid alternatives in documentation,Generator表达式只是创建一个只产生的生成器。

报价1:

生成器可以通用类型Generator[YieldType, SendType, ReturnType]注释。

引用2:

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

引用3:

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

© www.soinside.com 2019 - 2024. All rights reserved.