关于python中的yield

yield表达式

yield表达式在定义生成器或异步生成器函数时使用,它只能在函数的内部使用。一旦在函数体中使用了yield,则函数会变成生成器。

In [2]:
def gen():  # defines a generator function
    yield 123

async def agen(): # defines an asynchronous generator function (PEP 525)
    yield 123

yield 的作用就是把gen()变成一个generator,带有 yield 的gen()不再是一个普通函数,Python 解释器会将其视为一个 generator,调用生成器不会执行函数,而是返回一个 iterable 对象。原对象就被保存起来,继续往下执行。 这样带来的好处是在循环中不会占用较多的内存。 由于作用域问题,在python3.7版本之后不再推荐使用。