middle 函数 里 为什么还需要 while True ?
来源:12-9 生成器进阶-yield from-2

我是阿物
2019-05-09
bobby 老师, 这里的while True 去掉会报错StopIteration,为什么一定要加这个 while True, sales_sum函数里面不是已经有个 while True 了吗?
写回答
2回答
-
samarkand
2020-03-02
主要是为了第二次send(None). 可以改成
def middle(key):
final_result[key] = yield from sales_sum(key)
print(key + "销量统计完成!!.")
yield122020-09-22 -
我是阿物
提问者
2019-05-09
我明白怎么回事了,m.send(None) 这一句的 send 调用后,程序会继续执行找到下一个yield 的值,因此需要借助 middle 函数 的while True 循环, 让程序再一次进入 到sales_sum 生成器的 while 循环中,但是因为 生成器是 惰性计算的,因此主程序没有继续对当前的 委托生成器 middle 使用 ,sales_sum 中的循环程序也不会继续进行了。
012019-05-10
相似问题