itertools.islice不是发电机?

时间:2012-10-19 17:42:34

标签: python itertools

我有一个代码片,适用于生成器和生成器函数。当我尝试使用itertools.islice对生成器进行切片时,代码段不会生成输出。

我查看了代码,发现了以下代码:

if isinstance(result, dict):
    self.returned(result)
elif inspect.isgenerator(result):
    for x in result:
        self.returned(x)
else:
    self.returned(result)

事实证明,inspect.isgenerator会为False返回itertools.islice,这就是打破代码的原因。 inspect.isgeneratorfunction行为相同。

  1. itertools.islice不是发电机或发电机功能吗?
  2. 如何找出result是生成器还是itertools.islice对象?

1 个答案:

答案 0 :(得分:1)

基于

inspect.getmembers(itertools.islice)

islice是一个迭代器,而不是一个生成器。 更多信息Difference between Python's Generators and Iterators