迭代器主要是有两个函数
函数1 iter
函数2 next
string = '假期是真的太闲了'
it = iter(string)
next(it)
这里注意StopIteration
,通过raise StopIteration
我们可以直接让一个循环结束
为什么会说循环,因为for
循环与这个迭代有关
我们通过重写__iter__
和__next__
来利用for
循环完成对于斐波那契数列的输出
class Fibs:
def __init__(self,n=10):
self.a = 0
self.b = 1
self.n = n
def __iter__(self):
return self
def __next__(self):
self.a , self.b = self.b , self.a + self.b
if self.a > self.n:
raise StopIteration
return self.a
最上面的例子中函数next
一直在返回下一个数据
斐波那契例子中我们的next
一直在返回下一个数据
然而这两个重写函数的函数都在for
循环中,循环每次进行__next__
都获得了下一个数据,然后我们再打印出来
这两个函数都必须同时重写,不能只写一个__next__