有一个疑问是 能不能在生成器函数中写return
试验之后结果是可以的:
def h():
print('Wen Chuan')
yield 5
return 666
c = h()
a = next(c)
try:
b = next(c)
except StopIteration as e:
print(e.value)
print(a)
#### output #####
Wen Chuan
666
5
return 之后代表当前的生成器已经结束了,再次next()的时候会引起StopIteration异常,此时return的内容会在 错误信息的第一个参数里返回,就是 e.value
关于 python 的 yield from 参考这篇文章,写得不错
本文探讨了Python生成器函数中使用return语句的效果。通过示例代码展示,当生成器函数中的return被执行时,它会结束生成器,并在尝试进行下一次迭代时引发StopIteration异常,此时return的值可以通过异常对象获取。

被折叠的 条评论
为什么被折叠?



