【python】yield from
循环语句
yield from
是Python 3中的一个语法,用于在生成器中委托另一个生成器来产生值。当使用 yield from iterable
时,iterable
应该是一个可迭代对象(如列表、元组、字典、字符串等),其每个元素都是一个生成器。使用 yield from
可以将这些嵌套的生成器(子生成器)的值透明地传输到外层生成器(委派生成器)中。举个例子,我们可以通过以下代码实现一个简单的委派生成器:
def gen_outer():
yield from range(1, 4)
for i in gen_outer():
print(i)
输出:
1
2
3
在这个例子中,gen_outer()
是一个简单的委派生成器,它使用 yield from
委托了内部的 range(1, 4)
生成器来产生值。最终,外层生成器会产生所有子生成器的值,即输出了从 1 到 3 的整数。总之,yield from
语法可以使得生成器的编写变得更加简便和易读,特别是当需要处理多个嵌套的生成器时。
2. 例子
def foo():
yield 1
yield 2
yield 3
def bar():
yield from foo()
for i in bar():
print(i)
输出:
1
2
3
3. 例子:
python
def foo():
yield from range(3)
def bar():
yield from foo()
for i in bar():
print(i)
输出:
1
2
3