可迭代对象、迭代器与生成器
直接作用于 for 循环的对象统称为可迭代对象。
Python中,一边循环一边计算的机制,成为生成器:generator
Python中,yield 的作用就是把一个函数变成一个生成器
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
生成器是一种特殊的迭代器,它支持所有的迭代操作。除此之外。生成器还实现了一些迭代器没有实现的特性,比如可以通过send方法,实现和生成器内部的数据进行交互,
通过close方法去关闭生成器或者通过throw方法去抛出生成器里面的异常。