yield 对于 Python 来说,有两个含义:
- yield item 会产生一个值,提供给 next(…) 的调用方
- 此外还会做出让步,暂停执行生成器,让调用方继续工作,直到需要使用另一个值时再调用 next()。调用方会从生成器中拉取值
从语法上来看,协程与生成器都是类似的,都是定义体中包含 yield 关键字的函数。但是在协程中,yield 通常出现在表达式的右边,可以产出值,也可以不产生。如果 yield 关键字后面没有表达式,那么生成器产出 None。协程可能会从调用方接收数据,调用方把数据提供给协程使用的是 .send(datum) 方法,而不是 next(…) 函数。通常调用方会把值推送给协程。