采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
bobby 老师, 这里的while True 去掉会报错StopIteration,为什么一定要加这个 while True, sales_sum函数里面不是已经有个 while True 了吗?
主要是为了第二次send(None). 可以改成
def middle(key): final_result[key] = yield from sales_sum(key) print(key + "销量统计完成!!.") yield
我也这么写的,在子生成器的while下输出字符进行调试还是会多输出一次,但是中间生成器用while的话会多输出两次。但课程中说调用方send(None)的话会调用子生成器的next方法,那怎么退出啊= =
卧槽用这个方法没多输出,是符合预期的
我明白怎么回事了,m.send(None) 这一句的 send 调用后,程序会继续执行找到下一个yield 的值,因此需要借助 middle 函数 的while True 循环, 让程序再一次进入 到sales_sum 生成器的 while 循环中,但是因为 生成器是 惰性计算的,因此主程序没有继续对当前的 委托生成器 middle 使用 ,sales_sum 中的循环程序也不会继续进行了。
正解!
登录后可查看更多问答,登录/注册
socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO
1.2k 31
1.1k 24
1.1k 16
1.4k 10
1.1k 9