迭代器
只要定义了 __next__ 方法的对象即为迭代器。
可迭代对象
即提供迭代器的对象。 Python 中任意的对象,只要它定义了一个可返回迭代器的 __iter__ 方法或者定义可以支持下标索引的 __getitem__ 方法,那它即是一个可迭代对象。
举例: Google 是一个可迭代对象,它支持迭代,但我们不能直接对它进行迭代操作。 iter('Google‘) 是一个迭代器。
for c in iter('Google'): print(e)
# produces
'G'
'o'
'o'
'g'
'l'
'e'
生成器
使用了 yield 的函数被称为生成器(generator)。跟普通函数的区别在于,生成器是一个返回迭代器的函数,只能用于迭代操作。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
def fib(n):
a, b = 1, 1
for _ in range(n):
yield a
a, b = b, a + b
3万+

被折叠的 条评论
为什么被折叠?



