1. yield from 会抛出iterator中所有的值;而yield只是抛出传进来的值,如果是值,就抛出值,如果是iterator对象,抛出iterator对象

def g1(iterable):
yield iterable def g2(iterable):
yield from iterable for value in g1(range(10)):
print(value)
for value in g2(range(10)):
print(value)

输出:

range(0, 10)
0
1
2
3
4
5
6
7
8
9

2. yield from会在调用方与子生成器之间建立一个双向通道

final_result = {}

def sales_sum(pro_name): # 子生成器
total = 0
nums = []
while True:
x = yield
print(pro_name+"销量: ", x)
if not x:
break
total += x
nums.append(x)
return total, nums def middle(key): # 委托生成器
while True:
final_result[key] = yield from sales_sum(key)
print(key+"销量统计完成!!.") def main(): # 调用方
data_sets = {
"bobby牌面膜": [1200, 1500, 3000],
"bobby牌手机": [28,55,98,108 ],
"bobby牌大衣": [280,560,778,70],
}
for key, data_set in data_sets.items():
print("start key:", key)
m = middle(key)
m.send(None) # 预激middle协程
for value in data_set:
m.send(value) # 给协程传递每一组的值
m.send(None)
print("final_result:", final_result) if __name__ == '__main__':
main()

输出:

start key: bobby牌面膜
bobby牌面膜销量: 1200
bobby牌面膜销量: 1500
bobby牌面膜销量: 3000
bobby牌面膜销量: None
bobby牌面膜销量统计完成!!.
start key: bobby牌手机
bobby牌手机销量: 28
bobby牌手机销量: 55
bobby牌手机销量: 98
bobby牌手机销量: 108
bobby牌手机销量: None
bobby牌手机销量统计完成!!.
start key: bobby牌大衣
bobby牌大衣销量: 280
bobby牌大衣销量: 560
bobby牌大衣销量: 778
bobby牌大衣销量: 70
bobby牌大衣销量: None
bobby牌大衣销量统计完成!!.
final_result: {'bobby牌面膜': (5700, [1200, 1500, 3000]), 'bobby牌手机': (289, [28, 55, 98, 108]), 'bobby牌大衣': (1688, [280, 560, 778, 70])}

最新文章

  1. TaintDroid剖析之Native方法级污点跟踪分析
  2. Eclipse界面设置与常用技巧
  3. wpa_supplicant移植
  4. storm入门教程 第四章 消息的可靠处理【转】
  5. Linux系统安装VM-Tools
  6. Swift Array copy 的线程安全问题
  7. 【01背包】HDU 2602 Bone Collector (模板题)
  8. Gentoo网络管理方法总结
  9. 自学LinkedBlockingQueue源码
  10. 南方IT学校期末PCB结课项目考试(实操)说明书
  11. 关于SQL SERVER中的FLOAT转换为VARCHAR
  12. English trip -- VC(情景课)10 A Get ready 预备课
  13. os.path.join 用法
  14. 数据库们~MySQL~MongoDB~Redis
  15. java_基础——用代码编译.java文件+加载class文件
  16. Swift学习笔记 - Swift属性只读
  17. 1004: [HNOI2008]Cards burnside定理
  18. BootStrap:
  19. Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net
  20. JAVAOOP异常

热门文章

  1. JXL工具包对Excle文件操作
  2. 聊聊 Vue 中 title 的动态修改
  3. SpringBoot(三) 配置文件 篇章
  4. springmvc学习笔记三:整合JDBC,简单案例==数据库事务配置(切面)
  5. 创建Npm脚手架
  6. QT5.5+VS2013编译安装QtCharts (ZZ)
  7. 1042. Flower Planting With No Adjacent
  8. ICMP重定向 Redirect netwox libpcap netwag
  9. 从server.xml看Tomcat容器的层次结构
  10. python 连接数据库,查询结果写入数据到excel