BZ易风

导航

 

调试

 

 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     return "ok......"
13 
14 # 如果在调用creat_num的时候,发现这个函数中有yield,那么此时,不是调用函数,而是创建一个生成器对象
15 obj = creat_num(4)
16 
17 ret = next(obj)
18 print(ret)
19 
20 ret = next(obj)
21 print(ret)
22 
23 ret = next(obj)
24 print(ret)
25 
26 print("------循环------")
27 # 如果想接收return返回的值"ok......",则需要用try
28 while True:
29     try:
30         ret = next(obj)
31         print(ret)
32     except Exception as ret:
33         # 需要用ret.value来接收return的值,在循环之后才能打印出来
34         print(ret.value)
35         break

 

结果:

----------1-----------
----------2-----------
0
----------3-----------
----------4-----------
----------2-----------
1
----------3-----------
----------4-----------
----------2-----------
1
------循环------
----------3-----------
----------4-----------
----------2-----------
2
----------3-----------
----------4-----------
ok......

  

posted on 2019-08-22 10:57  BZ易风  阅读(181)  评论(0编辑  收藏  举报