作者:韩大妖丫头 | 来源:互联网 | 2023-06-08 18:56
先写了一个函数 输出菲波那切数列:
def fib1(max):
n,a,b = 0,0,1
while n print(b)
c = a+b
a = b
b = c
n += 1
return '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,1
while n yield b
c = a+b
a = b
b = c
n += 1
g = fib2(10)
print(g)
print(g.__next__())
for n in fib2(10):
print(n)
generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行