打包/打开发电机组

war*_*iuc 4 python

我有两台发电机.第一个生成器有时需要调用第二个生成器并从中返回它产生的值:

def a():
    for _b in b():
        yield _b

def b():
    yield 1
    yield 2

for _a in a():
    print _a
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式来做到这一点:

for _b in b():
    yield _b
Run Code Online (Sandbox Code Playgroud)

我试过这个:

yield *b()
Run Code Online (Sandbox Code Playgroud)

但肯定它不起作用.我有Python 2.6.

Joc*_*zel 6

我认为你的意思是PEP380.它可以从Python 3.3获得.看起来像:

 yield from b()
Run Code Online (Sandbox Code Playgroud)

Python2中没有特殊的语法.你只需使用for循环.

a你问题中的功能实际上是完全没用的.你可以b在它的位置使用它.