本文主要是介绍菲波那切数列与生成器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先写了一个函数 输出菲波那切数列:
def fib1(max):n,a,b = 0,0,1while n < max:print(b)c = a+ba = bb = cn += 1return 'done'
fib1(7)输出如下:
"C:\Program Files\Python35\python.exe" C:/Users/zty/Desktop/Py3Study/迭代器.py
1
1
2
3
5
8
13
怎么变成一个生成器呢?
要把fib1函数变成generator,只需要把print(b)改为yield b就可以了:
def fib2(max):n,a,b = 0,0,1while n < max:yield bc = a+ba = bb = cn += 1
g = fib2(10)print(g)
print(g.__next__())for n in fib2(10):print(n)
generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
这篇关于菲波那切数列与生成器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!