python的迭代器,只需要实现__iter__跟next()方法就成。
例如:
def __iter__(self): return self def next(self): result = self.get() if result is StopIteration: raise result return result
当迭代到最后无值的时候,会抛出StopIteration异常,不过好些自己的实现函数会去预先处理,不抛此异常
例如:
it = iter(lst) try: while True: val = it.next() print val except StopIteration: pass
至于生成器,主要是用到关键字yield,基本上这就是个生成器,而且不能跟return搭配用。生成器中也可有next()方法,即它也有迭代器的功能
可参考
http://www.cnblogs.com/huxi/archive/2011/07/01/2095931.html
http://www.cnblogs.com/huxi/archive/2011/07/14/2106863.html