python_yield嵌套

[原文]{.ul} 标签 [python]{.ul} [generator]{.ul} [yield]{.ul}

我有两个函数(发电机)。

def a():

yield 1

yield 2

def b():

yield ‘A’

yield ‘B’

yield a()

现在,我要遍历b()并期望它应该输出A B 1 2。但不是。它给这个。

In [11]: for i in b():

….: print i

….:

A

B

<generator object a at 0x10fc3ddc0>

如何获得所需的输出?

最佳答案

在python3.3 +上,您可以使用yield
from

def b():

yield ‘A’

yield ‘B’

yield from a()

在python3.3之前的版本中,您需要在循环中显式产生值:

def b():

yield ‘A’

yield ‘B’

for item in a():

yield item