【发布时间】:2020-01-06 16:16:28
【问题描述】:
我想编写一个生成器,它可以从收益中接受有限数量的输入,然后优雅地处理进一步的输入。捕捉 StopIteration 的最佳方法是什么?
我尝试使用 try-except 块中的 yield from 表达式将内部生成器与外部生成器进行包装,但无论如何都会引发 StopIteration...
def limited_writer(max_writes):
for i in range(max_writes):
x = yield
print(x) #
def graceful_writer(l):
try:
yield from l
except StopIteration:
# Ideally will have additional handling logic here
raise Exception("Tried to write too much")
l_w = limited_writer(4)
g_w = graceful_writer(w)
g_w.send(None)
for i in range(5):
g_w.send(i)
我希望上面引发异常(但更普遍地提供了一种处理提供过多数据的好方法),但实际上它仍然引发了 StopIteration。最好的解决方案是什么?
【问题讨论】:
-
你的意思是
g_w = graceful_writer(l_w)?
标签: python