def fab_demo4(max): a,n,b = 0,0,1 while n < max: yield b # 生成器走到这一步返回b,需要再次调用才能继续执行 a,b = b,a+b n += 1 f = fab_demo4(10) # 调用了fab_demo4方法,返回内存地址 print(list(f)) # lsit()将地址内数据显示,有一次调用方法,让yield后面的代码执行,指导循环结束
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
下面是我一以前计算斐波那契数列的方法
# [] 列表实现 def fibonacci(num): fibs = [0, 1] for i in range(num - 2): fibs.append(fibs[-2] + fibs[-1]) # 倒数第二个+倒数第一个数的结果,追加到列表 print(fibs) fibonacci(10)
# yield 实现 def fab_demo4(max): a,n,b = 0,0,1 while n < max: yield b #print b a,b = b,a+b n+=1 print(next(fab_demo4(10))) for i in fab_demo4(8): print(i)
1 1 1 2 3 5 8 13 21 Process finished with exit code 0