这几天在看数据结构,经常遇到带有yield的函数,所以看了一下。
带有yield在函数中的作用是它相当于普通函数中的return的功能,在函数执行到yield的时候会返回一个值,并且yield后面的语句本次不会再执行。但是在下次再次调用yield函数的时候,函数从yield下面的语句开始继续执行,并记忆了前一次执行的状态。
这样做的好处是使得不必一次产生所有的结果,而是执行到哪一步就产生这一步的结果。这样就避免了当处理很多数据时,给内存带来压力。
带有yield的函数与普通函数相比,带有yield的函数是一个生成器,调用这样的函数会产生一个可迭代的对象,当每次循环到该对象中的元素时,会调用该函数,每次执行该函数返回yield后面的值。