迭代器与生成器


迭代器

使用iter()接受一个可迭代对象(要求迭代对象实现__iter__方法),得到迭代器

使用next()控制迭代器迭代(要求迭代器实现__next__方法),得到具体的值

迭代代理1:封装一个代理对象,实现__iter__方法,包裹真正需要迭代的对象

迭代代理2:封装一个代理对象,实现__iter__方法,又实现__next__,包裹真正需要迭代的对象 

生成器与yield

一个函数中需要有一个yield语句即可将其转换为一个生成器。跟普通函数不同的是,生成器只能用于迭代操作

一个生成器函数主要特征是它只会回应在迭代中使用到的next操作。

send 与next的作用是类型的,都能触发生成器执行到下一个yield或抛出异常

区别:通过send()可以向生成器内传递消息,所以next() = send(None)