python 小知识 -rethinking python 生成器
前面我们分享过 python 迭代器,这里要说的生成器是一种特殊的迭代器。 普通的迭代器的迭代对象是完全加载到内存中;而生成器的迭代对象不是一次性生成好的,而是迭代对象使用的时候才具体生成。
创建生成器主要通过yield
关键字来创建,我们具体看下生成器到底有哪里不同
复制代码
从上面可知,yield 一个迭代对象的一个元素返回值,使用上和普通迭代器没什么区别。
复制代码
从 next()函数的结果来看,在迭代对象时,遇到 yield 时会暂停,等下一次迭代对象时,继续执行后续的逻辑。
也就是说,python 解释器在遇到 yield 的会生成一个 generator,等迭代的时候才一个一个执行迭代对象。
so what? 这个有什么用?
前面的例子中生成器函数,输入的参数是比较小的数据,如果输入的比较大的数据,内存一次性装不下的数据,要如何进行遍历,比如 100w 个图片数据?
这个时候生成器函数就起到了用时才调用才使用的原则,不需要一次性装入所有数据。
具体参见如下:
复制代码
版权声明: 本文为 InfoQ 作者【AIWeker】的原创文章。
原文链接:【http://xie.infoq.cn/article/17bdf5312d455ae54bc5a0adf】。文章转载请联系作者。
评论