生成器:调用时返回一个迭代器
如果一个函数中包含yield语法,那这个函数就会变成一个生成器
例1:
1 def draw_money(draw): #这个函数称为生成器 2 while draw >0: 3 draw -=100 4 yield 100 #100 是返回的值 5 print('取钱!') 6 atm = draw_money(300) 7 print(type(atm)) 8 print(atm.__next__()) 9 print(atm.__next__())10 print('干了一件其他的事') #代码执行中断也不影响下一次的继续执行11 print(atm.__next__())12 # print(atm.__next__()) #代码已经执行完了,添加这行会报错
结果:
1 1002 取钱!3 1004 干了一件其他的事5 取钱!6 100
例2:
1 def draw_money(draw): 2 while draw >0: 3 draw -=100 4 yield 100 # 100 为返回值,每次打印的值 5 print('取钱!') 6 atm = draw_money(300) 7 print(type(atm)) 8 print(atm.__next__()) 9 print(atm.__next__())10 print('干了一件其他的事') # 迭代停止,然后后面可以再继续运行11 print(atm.__next__())12 # print(atm.__next__()) # 已经迭代完了,多迭代一行会直接报错
结果:
1 1002 取钱!3 1004 干了一件其他的事5 取钱!6 100