yield from如果要从另一个可迭代对象中产生所有值,请使用:
def foob(x): yield from range(x * 2) yield from range(2) list(foob(5)) # [0、1、2、3、4、5、6、7、8、9、0、1]
这也适用于发电机。
def fibto(n): a, b = 1, 1 while True: if a >= n: break yield a a, b = b, a + b def usefib(): yield from fibto(10) yield from fibto(20) list(usefib()) # [1、2、3、5、8、1、1、2、3、5、8、13]