我在 pymotw.com 的合并和拆分部分偶然发现了这段代码。
from itertools import *
def make_iterables_to_chain():
yield [1, 2, 3]
yield ['a', 'b', 'c']
for i in chain.from_iterable(make_iterables_to_chain()):
print(i, end=' ')
print()
我不明白 make_iterables_to_chain() 是如何工作的。它包含两个 yield 语句,它是如何工作的?我知道生成器是如何工作的,但那里只有一个 yield 语句。
请帮忙!
原文由 unnobtainium 发布,翻译遵循 CC BY-SA 4.0 许可协议
与单个
yield
工作方式相同。您可以在生成器中拥有任意数量的
yield
s,当调用__next__
时,它将执行直到遇到下一个 yield。然后,您返回生成的表达式,生成器暂停,直到再次调用__next__
方法。在生成器上运行几个
next
调用以查看: