我们现在通过一个列子来讲一讲yield的工作原理
示例1:斐波那契数列通过yield实现
def Fab(n):
"""
使用yield来返回值;用非递归来实现斐波那契数列,使用yield来返回值,
"""
a, b, m = 0, 1, 0
i = 1
while m < n:
yield b
a, b, m = b, a+b, m+1
print("m值为: ", m, "\n")
i += 1
t = Fab(10)
print("变量t的类型为: ", type(t), "\n")
num = 1
for i in t:
print('Fab(%d)' % num, i)
num += 1
输出结果:
变量t的类型为: <class 'generator'>
fab(1) 1
m值为: 1
fab(2) 1
m值为: 2
fab(3) 2
m值为: 3
fab(4) 3
m值为: 4
fab(5) 5
m值为: 5
fab(6) 8
m值为: 6
fab(7) 13
m值为: 7
fab(8) 21
m值为: 8
fab(9) 34
m值为: 9
fab(10) 55
m值为: 10
1、函数中有yield语句就代表该函数就是一个生成器
2、这个例子中Feb(n)函数就是我们自定义的一个生成器,而Feb中所有语句就是用来定