Python 生成器与迭代器
迭代器是一种可以重复做某种事情的对象,python中实现了__iter__方法的对象都是可迭代的,实现了next()方法的对象是迭代器。
简单地说,实现了__iter__和next是迭代器的基本两个函数,所有的迭代器都应该具备这两个方法。
如下为一个迭代器
class Fib: def __init__(self): self.a,self.b = 0,1 def next(self): self.a,self.b = self.b,self.a+self.b return self.a def __iter__(self): return self fibs = Fib() for i in fibs: if i < 1000: print i
生成器则是一个函数,他是由yield语句来触发的,程序运行完yield语句时会停止,并保存状态(像一个中断处理),返回一个值,等待下一次激活。
def fib(): a,b = 0,1 while 1: a,b = b,a+b yield a for f in fib(): if f < 1000: print f else: break
这个例子与上一个完成同样的效果。
生成器与迭代器都是可以迭代,并且带向迭代。