在python生成器中,可以返回传递给StopIteration
异常的最终值:
def gen():
yield 3
yield 1
return 2
> g = gen()
> next(g)
3
> next(g)
1
> next(g)
Traceback (most recent call last): ...
next(g)
StopIteration: 2
> next(g)
Traceback (most recent call last): ...
next(g)
StopIteration
有没有办法访问传递给for循环中引发的StopIteration的值?类似的东西:
> result = 0
> for x in gen():
result += x
else catch StopIteration as y:
result /= y.args[0]
> result
2
答案 0 :(得分:2)
没有; for
循环吞下StopIteration
个例外。如果您关心StopIteration
异常的详细信息,则需要自己实现迭代。
也就是说,可能有更好的方法来做你想做的事。