码迷,mamicode.com
首页 > 其他好文 > 详细

对yield的初步理解

时间:2017-05-28 17:59:36      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:display   int   bsp   lte   找不到   sed   isp   lap   pre   

技术分享
 1 def go():
 2     while True:
 3         data = 1
 4         r = yield data  # data是返回值,r是接收值
 5         print("data", data)
 6         print("A1", r)
 7         data += 1
 8 
 9         r = yield data
10         print("data",data)
11         r += r
12         print("A2", r)
13         data += 1
14 
15         r = yield data
16         print("data",data)
17         print("A3", r)
18         # 运行时此后若找不到下一个yield,则会报错StopIteration
19 
20 my = go()
21 print("my", my)
22 print("None", my.send(None))
23 print(my.send("1"))
24 print(my.send("2"))
25 print(my.send("3"))
View Code

①my.send(None):  意思为启动协程,此步会返回第一个yield后面的data值。

②send一次,运行的代码是两个yield之间的代码,最后返回后一个yield后面的data值,若缺少后一个yield语句,则会报错“Stoplteration”

③r = yield data

   r 为my.send(‘传入的数据‘) 传入的数据

   data为此段运行完返回的数据

 

 

感谢大家的评论

对yield的初步理解

标签:display   int   bsp   lte   找不到   sed   isp   lap   pre   

原文地址:http://www.cnblogs.com/DBOOS/p/6916127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!