如果我不
yield
做任何事情yield from
会发生什么?
这是一个例子:
def inner(x):
if x > 0:
yield "Greater than zero"
elif x==0:
yield "Zero"
def outer():
yield from inner(x)
在这种情况下,当且仅当 x >= 0 时,
inner(x)
才会产生 outer()
。
如果 x 为负数会发生什么?
如果直接使用
inner(-1)
作为迭代器,也会发生同样的事情; yield from
只是传递所产生的任何内容。如果它没有 yield
任何东西,则会抛出 StopIteration
异常,并且该异常会通过。循环遍历迭代器的运算符或函数将其解释为序列的结尾并停止迭代;如果您不从这样的构造中调用 outer()
,您将看到异常本身。