2

我有一个适用于生成器和生成器函数的代码。当我尝试使用 对生成器进行切片时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返回Falsefor itertools.islice,这就是破坏代码的原因。inspect.isgeneratorfunction行为相同。

  1. 不是itertools.islice生成器,还是生成器函数?
  2. 我怎样才能找出result是生成器还是itertools.islice对象?
4

1 回答 1

1

基于

inspect.getmembers(itertools.islice)

islice是迭代器,而不是生成器。更多信息Python 的生成器和迭代器之间的区别

于 2012-10-19T17:50:38.157 回答