python生成器

生成器

在函数中使用yield,可将函数转化为生成器函数。yield与return的区别是什么呢?return返回后,函数状态终止。而yield会保存当前函数的执行状态,在返回后,函数又回到之前保存的状态继续执行。一旦生成器函数被yield,函数会暂停,控制权返回调用者。局部变量和它们的状态会被保存,知道下一次调用。

生成器的优点:

  • 内存使用更加高效。比如列表在建立的时候需要分配所有的内存空间,而生成器不需要
  • 如果我们需要处理的数据远远大于内存,那么可以使用生成器。比如可以让生成器返回当前的处理状态,由于它可以保存状态,那么下一次直接处理即可