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