- yield这个词字典意思为:产出和让步。yield item这行代码产出一个值,提供给next(...)的调用方。还会作出让步,暂停执行生成器,让调用方继续工作。
- 协程和生成器(生成器作用不大)类似,都是定义体中包含yield关键字形的函数,区别在于协程中yield通常出现在表达式的右边(如datum = yield),可以产出值,也可以不产出-------如果yield关键字后面没有表达式,那么生成器产出None。协程还可以从调用方接收数据,使用send()方法。
- yield是一种流程控制工具,实现协作式多任务:协程可以把控制器让步给中心调度程序,从而激活其他的协程。把yield视作控制流程的方式,这样就好理解协程了。
- 激活协程可调用next(my_coro),也可以调用my_coro.send(None),效果一样。
- 协程和生成器中的yield后面的值或者表达式,类似于一般函数的return,返回一个值,但是这个值要用:
type a = next(my_coro)来得到。
而普通函数可以这样:
type a = my_function()直接得到函数的返回值。
网友评论