大家都知道,生成器(generator)能够迭代的关键是因为它有一个next()方法,工作原理就是通过重复调用next()方法,直到捕获一个异常
而带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代,工作原理同上
yield 是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面的值。重点是:下一次迭代时,从上一次迭代遇到的yield后面的代码开始执行。
简要理解:yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。
举一个例子大家就都明白了
def fun():
print("starting...")
while True:
res = yield "返回一个值"
print("res:",res)
g = fun()
print(next(g))
print("*"*10)
print(next(g))
#output:
#starting...
#返回一个值
#**********
#res: None
#返回一个值