1生成器
生成器的本质 是迭代器
函数体存的是代码 #存yield 的时候是生成器
函数生成生成器
def fun(): print(1) yield 4 g = fun()View Code
#碰到return 就结束函数
#碰到 yield 就挂起
def fun(): print(1) return 2 def fun(): print(1) yield 4View Code
三个错误分析
语法分析 语义分析 词法分析
生成器的两种情况
新建一个 用完就没 没了打错
def fun(): print(1) yield 4 #我的函数走到这 生成第一个 之前的清空了 print(2) yield 9 #第二部函数走到这 g = fun() #生成一个生成器 fun()# #生成一个生成器 print(g.__next__() ) print(g.__next__() )# yield后面的 # print(g.__next__() )#迭代器 惰性只能用一个View Code
直接使用 永不枯竭
print(fun().__next__()) #fun() 这样生成 一个生成器 # print(fun().__next__()) print(fun().__next__())#fun()又重新生成一个生成器 若有多个yield 到不了第二个View Code