为什么这段代码运行良好并且不抛出异常?
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
?