yield

产生是产生值给调用方

让步是暂停生成器,同时让步也可以作为流程控制手段

 yield item

上面这行代码会产出一个值。提供给next(...)的调用方。此外还会做出让步,暂停执行生成器,让调用方工作。直到需要下一个值时再调用next(),调用方再次会从生成器中拉取值。

yield关键字也可以不接收值或者传出值,它可以只做流程控制之用

协程

协程和生成器从句法上看很相似,都是定义体中包含yield关键字的函数。不过在协程中yield通常出现在表达式的右侧,如下:

 item = yield

可以产出值,也可以不产出值,如果yield后面没有表达式,那么生成器产出None。

协程可能会从调用方接收数据,不过调用方把数据提供给协程使用的是.send(value)方法,而不是next(...)函数。通常,调用方会把值推送给协程。

使用yield可以实现协作式多任务:协程可以把控制器让步给中心调度程序,从而激活其他的协程。

本章要介绍的内容:

  • 生产器作为协程使用时的行为和状态
  • 使用装饰器自动预激协程
  • 调用方如何用生成器对象的.close()和.throw()方法控制协程
  • 协程终止时如何返回值
  • yield from新句法的用途和定义
  • 使用协程管理仿真系统中的并发活动

最新文章

  1. 移动端UC /QQ 浏览器的部分私有Meta 属性
  2. Go语言学习笔记1 变量,类型以及赋值
  3. npm库下载缓慢解决方案
  4. C#字符操作
  5. Jquery scrollTop animate 實現動態滾動到頁面頂部
  6. SignalR实时聊天功能
  7. PowerDesigner实用技巧小结(3)
  8. SSH框架应用中常用Jar包用途介绍
  9. 树的直径 poj 2631
  10. Webdriver实现下载功能,屏蔽掉windows弹出的对话框,FireFox下设置浏览器的属性,两种实现方式:
  11. Effective前端6:避免页面卡顿
  12. 使用tcpdump测试反向代理和lvs的nat区别
  13. Python发邮件的小脚本
  14. J - Romantic
  15. 记一次MyBatis的错误
  16. IE访问历史记录恢复工具pasco
  17. [Asp.Net web api]基于自定义Filter的安全认证
  18. Flask框架的学习与实战(一):开发环境搭建
  19. MYSQL学习笔记 (六)explain分析查询
  20. Javascript-history.go()和history.back()的用法和区别

热门文章

  1. jupyter中使用graphviz
  2. Font Awesome (Mark)
  3. css---6 选择器声明的优先级
  4. SpringBoot 非web项目简单架构
  5. yii2.0 数据库查询操作
  6. gevent实现并发
  7. jquery选择器中中>和空格的区别
  8. Bootstrap FileInput.js + springmvc uploadFile
  9. 「题解」:$Game$
  10. 树形dp经典换根法——cf1187E