迭代器
使用iter()接受一个可迭代对象(要求迭代对象实现__iter__方法),得到迭代器
使用next()控制迭代器迭代(要求迭代器实现__next__方法),得到具体的值
迭代代理1:封装一个代理对象,实现__iter__方法,包裹真正需要迭代的对象
迭代代理2:封装一个代理对象,实现__iter__方法,又实现__next__,包裹真正需要迭代的对象
生成器与yield
一个函数中需要有一个yield语句即可将其转换为一个生成器。跟普通函数不同的是,生成器只能用于迭代操作
一个生成器函数主要特征是它只会回应在迭代中使用到的next操作。
send 与next的作用是类型的,都能触发生成器执行到下一个yield或抛出异常
区别:通过send()可以向生成器内传递消息,所以next() = send(None)