middle函数里写的while true

来源:12-9 生成器进阶-yield from-2

wireless_ZDJ

2019-02-25

还有一个问题: 我把middle函数中的whlie ture给去掉了 然后运行代码,抛出stopiteration 不是说yield from可以捕获stopiteration吗??? 问题: 为什么要在middle函数里写while true

写回答

1回答

bobby

2019-02-27

//img.mukewang.com/szimg/5c76650e0001342009760250.jpg 这里的yield from是说sales_sum
中抛出的stopiteration会被处理

0
2
放牛班的春天0
回复
wireless_ZDJ
应该先想想m.send执行的过程,主要m.send会从上一次暂停的地方继续执行到下一个yield语句暂停,但是m.send(None)执行后, sales_num和middle都执行完了,那么m.send(None)找不到下一个yield语句,证明生成器执行结束,那么就会抛出StopIteration提醒调用方,生成器执行结束。我也是想了很久, while True主要是为了引导m.send(None)不会抛出StopIteration的错误,但是在middle最后一行添加yield,或者直接try...except m.send(None)抛出的StopIteration会更加好理解一点
2019-11-12
共2条回复

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程