请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

middle函数里写的while true

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

正在回答 回答被采纳积分+3

1回答

bobby 2019-02-27 18:23:47

https://img1.sycdn.imooc.com//szimg/5c76650e0001342009760250.jpg 这里的yield from是说sales_sum
中抛出的stopiteration会被处理

0 回复 有任何疑惑可以回复我~
  • 提问者 wireless_ZDJ #1
    老师可能我说的不明确,我补充一下:
    1:为什么要在middle函数里写whlie true?
    2:为什么去掉middle函数里的whlie true后运行函数抛出stopiteration?
    回复 有任何疑惑可以回复我~ 2019-02-27 20:05:45
  • 放牛班的春天0 回复 提问者 wireless_ZDJ #2
    应该先想想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 15:46:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信