首页 > 解决方案 > Python iter 函数在没有正常函数的标记值的情况下无法工作

问题描述

这里我定义了一个普通函数:

def abc():
  return 1

现在,当我在 abc 方法上使用 iter 函数进行迭代时,出现以下错误。

for i in iter(abc):
  print i

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'function' object is not iterable

但是现在当我使用哨兵时,它的工作原理。

 for i in iter(abc, ''):
  print i

1
1
1
1
1
1
...

知道为什么会发生上述行为吗?

标签: pythoniteratorgenerator

解决方案


iter(spam)期望spam是可迭代的,而函数对象不是。

iter(spam, sentinel)期望spam是一个可调用的,它是。所以iter会一直调用spam,直到它返回哨兵值。


推荐阅读