我有两个函数,generatorA()
调用其中的generatorB()
。我想在调用generatorB()
时获得全部收益,但我只会得到0,1,2
如何获得0,1,2,3,4,5
generatorA()
是回叫功能。所以我不能说何时调用。
def generatorA():
mylist = range(4,6)
for i in mylist:
yield i
def generatorB():
generatorA()
mylist = range(3)
for i in mylist:
yield i
for i in generatorB():
print(i)
答案 0 :(得分:3)
使用yield from
:
def generatorA():
return range(4,6)
def generatorB():
mylist = range(3)
for i in mylist:
yield i
yield from generatorA()
for i in generatorB():
print(i)
输出
0
1
2
4
5
答案 1 :(得分:3)
使用yield from
,您可以通过可迭代的拆包进一步缩短操作时间。
def generatorB():
yield from (*range(3), *generatorA())
您可以对generatorA
做同样的事情:
def generatorA():
yield from range(4,6)
(...但是我认为generatorA
是更复杂事物的替代。)
>>> list(create())
[0, 1, 2, 4, 5]