【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

 

参考资料

posted @ 2023-06-06 19:08  苏格拉底的落泪  阅读(18)  评论(0编辑  收藏  举报