Week 7
Iterator
例如遍历序列,for x in s 会创建 iterator,不妨记为 i = iter (s)。不断取 x = next(i),x 会依次赋值,而 i 会向后移动。
到达结尾报错 StopIteration。可以用 try 处理异常:
1 | try: |
即为 for 的等价实现
Generator
一类生成 iterator 的函数。
函数内部 yield 返回的值会依次被迭代。
generator 的运行是懒惰的,调用一次 next 会执行到下一次 yield。故 generator 可以 yield 无穷次,生成不会停止的 iterator。
可用 yield for gen() 来 yield generator gen() 的所有迭代值。
Week 8
面向对象。