1. 迭代器
迭代器是什么?
L = range(5)
it = iter(L)
>>> it
<listiterator object at 0x1A63110>
>>> it.next()
0
>>> it.next()
1
>>> it.next()
2
迭代器越界时抛出StopIteration异常。
用for关键字进行迭代。
2. 生成器
带有yield的函数称为生成器。
简单地说,yield作用就是把一个函数变成一个生成器,带有yield的函数不再是一个普通函数,python解释器会将其视为一个生成器,调用生成器函数会返回一个iterable对象。在for循环执行时,每次循环都会执行函数内部的代码,执行到yield时,就返回一个迭代值。下次迭代时,代码从yield下一条语句继续执行。
def fab(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1