从 yield 开始入门协程
从 yield 开始入门协程
简单介绍 yield
本篇文章会先向你介绍一个陌生的 Python 关键词,他和 return
就像一对新兄弟,有相似之处,又各有不同。
相似的是:yield 和 return 都可以在一个函数里将值返回给调用方;
不同的是:return 后,函数运行就终止了,而 yield 则只是暂停运行。
关于 yield 的简单使用,请先看如下例子
复制代码
重点有如下几个:
含有 yield 的函数,不再是普通的函数,直接调用含有 yield 的函数,返回的是一个生成器对象(generator object)
可以使用 for 循环(实际还可以使用 list 或者 next 函数)来遍历该生成器对象,将 yield 的内容一个一个打印出来
更多关于 yield 和生成器的内容,请前往前面的文章,里面有非常详细的讲解:3.6 【基础】生成器
向生成器中发送消息
函数暂停之后,如果调用者能在下一次恢复函数运行的时候,向它传递一些信息,那么整个程序的灵活性会大大提升。
下面通过一个简明的演示来看看,如何往生成器中发送消息:
复制代码
输出。
复制代码
这里解释下为什么这么输出。 重点是jump = yield index
这个语句。
分成两部分: - yield index
是将 index return
给外部调用程序。 - jump = yield
可以接收外部程序通过 send()发送的信息,并赋值给jump
版权声明: 本文为 InfoQ 作者【乌龟哥哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/a3fbc288a88c7e0bc09e1096a】。文章转载请联系作者。
评论