调试
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......