def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
# yield b+2
a, b = b, a + b
n = n + 1
return 'done'
以斐波那契函数为例,在用以下循环读取时,
for n in fib(6):
print (n)
输出:
1
1
2
3
5
8
而后对函数第五行“yield b+2”取消注释,并将循环改成下方所示
for n in fib(6):
if n < 5:
print (n)
则输出:
1
1
2
3
由此可见,generator是一个类似list和tuple的东西,里面装的就是yield要输出的所有元素。