迭代器

创建一个迭代器需要的两个方法 iter() 与 next() 。

  • iter() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 next() 方法并通过 StopIteration 异常标识迭代的完成。
  • next() 方法(Python 2 里是 next ())会返回下一个迭代器对象。
  • StopIteration

StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 next() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。

  1. class my_iter:
  2. def __init__(self, count):
  3. self.count = count
  4. pass
  5. def __iter__(self):
  6. self.a = 1
  7. return self
  8. def __next__(self):
  9. if self.a < self.count:
  10. x = self.a
  11. self.a += 1
  12. return x
  13. else:
  14. raise StopIteration

生成器

使用了 yield 的函数称为生成器