生成器:
# 生成器函数(内部是否包含yield) def func(): print('F1') yield 1 print('F2') yield 2 print('F3') yield 100 print('F4') # 函数内部代码不会执行,返回一个 生成器对象。 v1 = func() # 生成器是可以被for循环,一旦开始循环那么函数内部代码就会开始执行。 for item in v1: print(item)
总结:函数中如果存在yield,那么该函数就是生成器函数,调用生成器函数会返回一个生成器,生成器只有被for循环时,生成器函数内部的代码才会执行,每次循环都会获取yield返回的值。
yield from:
def base(): yield 88 yield 99 def func(): yield 1 yield 2 # 跳到上面的base函数 yield from base() yield 3 result = func() for item in result: print(item)
生成器推导式:
v1 = (i for i in range(10)) #生成器推导式,创建了一个生成器,内部循环未执行。 for i in v1: print(i)