1.带yield的函数是一个生成器,而不是一个函数了,这个生成器有一个函数就是next函数,next就相当于“下一步”生成哪个数,这一次的next开始的地方是接着上一次的next停止的地方执行的,所以调用next的时候,生成器并不会从foo函数的开始执行,只是接着上一步停止的地方开始,然后遇到yield后,return出要生成的数,此步就结束
2.yield类似return,只不过每次到yield时就会返回,然后再次调用的时候,就从上次返回的(yield)的地方继续
def foo(num):
n,a,b = 0,0,1
while n < num:
yield b
a,b = b,a+b
n = n + 1
for i in foo(10):
print(i)
结果:1-1-2-3-5-8-13-21-34-55-