1 def creat_num(all_num):
2 print("----------1-----------")
3 a,b = 0,1
4 current_num = 0
5 while current_num < all_num:
6 print("----------2-----------")
7 yield a # 如果一个函数中有yield语句,那么这个就不再是函数,而是一个生成器的模板
8 print("----------3-----------")
9 a, b = b, a+b
10 current_num += 1
11 print("----------4-----------")
12
13 # 如果在调用creat_num的时候,发现这个函数中有yield,那么此时,不是调用函数,而是创建一个生成器对象
14 obj = creat_num(10)
15
16 ret = next(obj)
17 print(ret)
18
19 ret = next(obj)
20 print(ret)
21
22 ret = next(obj)
23 print(ret)
结果:
----------1----------- ----------2----------- 0 ----------3----------- ----------4----------- ----------2----------- 1 ----------3----------- ----------4----------- ----------2----------- 1