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

时间:2017-02-14 13:22:33

标签: python generator yield type-hinting

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

e.g:

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

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

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

1 个答案:

答案 0 :(得分:3)

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

引用1:

  

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

引用2:

  

如果您的生成器只会产生值,请设置SendType和   ReturnTypeNone

引用3:

  

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