返回generator expression的函数的正确类型注释是什么?
e.f.:
def foo():
return (x*x for x in range(10))
我无法弄清楚这是-> Iterator[int]
,-> Iterable[int]
,-> Generator[int, None, None]
还是别的什么。
如果应该有一个 - 最好只有一个 - 显而易见的方法,那么这里显而易见的方法是什么?
您提到的所有三种形式都列为valid alternatives in documentation,Generator表达式只是创建一个只产生的生成器。
报价1:
生成器可以通用类型
Generator[YieldType, SendType, ReturnType]
注释。
引用2:
如果您的生成器只会产生值,请将
SendType
和ReturnType
设置为None
引用3:
或者,将您的生成器注释为具有
Iterable[YieldType]
或Iterator[YieldType]
的返回类型: