前几天在用jieba分词时,发现cut方法返回的是一个生成器。这里记录一下学习笔记。
简单来说,使用yield关键字的就是生成器(也有可能是协成)。如果懂spark rdd的话,生成器就更好理解
使用yield定义一个函数,当调用时仅返回一个生成器,函数内部的代码并不执行,而是在迭代时执行代码。RDD的惰性计算原理类似,转换操作并不会计算数据,只有遇到action操作才会真正的计算数据。
二者这样做的好处就是省内存。
回到生成器。
迭代过程中,第一次执行,逐行执行到yield关键字,然后返回yield值。第二次迭代返回yeild之后的内容。
具体可以看看费波纳茨数列的实现。非常简单。