【发布时间】:2022-01-05 13:13:54
【问题描述】:
我是 Python 新手,我发现 yield 语句非常有用。然而,有件事让我很惊讶。将多个yield 语句放在一个函数中将导致在for var in fn() 循环中看到每个语句。但是,如果我从使用 yield 语句的初始函数执行另一个函数,则不会执行该函数。我刚刚采取了幼稚的方法,只是认为它会起作用。
例如
def fn2():
print("blah")
yield "you"
def fn():
yield "hi"
fn2()
yield "there"
for a in fn():
print('{}'.format(a))
如果我要注释掉 yield "you",我的输出将是:
hi
there
如果没有,那就是:
hi
blah
there
没有任何警告或错误,它只是耸耸肩继续执行,比它不工作更令人惊讶。
这是怎么回事?
【问题讨论】: