为什么这段代码可以正常运行而没有抛出异常?
def myzip(*args):
iters = [iter(arg) for arg in args]
try:
while True:
yield tuple([next(it) for it in iters])
except StopIteration:
return
for x, y, z in myzip([1, 2], [3, 4], [5, 6]):
print(x, y, z)
但是如果这行代码
yield tuple([next(it) for it in iters])
替换为
yield tuple(next(it) for it in iters)
那么一切都停止工作并抛出一个 RuntimeError
吗?
StopIteration
异常,而不是重新引发为RuntimeError
。 - blhsing