何为生成器:就是一种特殊的迭代器,详细介绍在:https://blog.csdn.net/qq_35976351/article/details/79680121
何为迭代器:一个实现iter和next方法的对象就叫做迭代器,详细说明请看这篇文章:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143178254193589df9c612d2449618ea460e7a672a366000
最简单识别一个是不是迭代器:看程序中有没有yield,有yield就是迭代器。
下面直接写程序:
def fei(num):
a=0
b=1
current_index=0
print('1'*10)
while current_index<num:
a,b=b,b+a
current_index+=1
yield a,b
# yield b
print('2'*10)
z=fei(10)
c,d=next(z)
print(c,d)
print(next(z))
print(next(z))
在上面程序中,print(z)的输出是元组,我用中间变量接受,然后切片。分别输出c,d的值。yield的作用:遇到第一个next会停下,保存当前状态,遇到第二个next会进行之前状态