2
产量返回collections.Iterable但许多类型也可迭代如何确定函数返回值是否是生成器?
def aaaa():
yield 1
yield 2
yield 3
d = aaaa()
print(d,type(d),isinstance(d, collections.Iterable))
打印类型
<generator object aaaa at 0x0000000002626B88> <class 'generator'> True
我没有找到类“发电机”或者我不能做类型检测。
为什么你需要知道?迭代器和生成器的全部重点是你可以迭代它而不需要知道它是什么。 – BrenBarn
类型检查是一种代码异味,避免。 – wim
@BrenBarn:如果你需要迭代两次或更多的结果,你必须知道。你总是可以使用'itertools.tee',但这只是你可能只想为发电机支付的开销。即使所有用户中有99.9%不需要知道,总会有一些这样的问题是有趣的。 :-) – cfi