如果我没有从“yield from”中产生任何东西,会发生什么?

问题描述 投票:0回答:1

如果我不

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 为负数会发生什么?

python yield yield-from
1个回答
0
投票

如果直接使用

inner(-1)
作为迭代器,也会发生同样的事情;
yield from
只是传递所产生的任何内容。如果它没有
yield
任何东西,则会抛出
StopIteration
异常,并且该异常会通过。循环遍历迭代器的运算符或函数将其解释为序列的结尾并停止迭代;如果您不从这样的构造中调用
outer()
,您将看到异常本身。

© www.soinside.com 2019 - 2024. All rights reserved.