python

超轻量级php框架startmvc

浅谈对yield的初步理解

更新时间:2020-05-02 00:42:01 作者:startmvc
如下所示:defgo():whileTrue:data=1r=yielddata#data是返回值,r是接收值print("data",data)print("A1",r)data+=

如下所示:


def go():
 while True:
 data = 1
 r = yield data # data是返回值,r是接收值
 print("data", data)
 print("A1", r)
 data += 1

 r = yield data
 print("data",data)
 r += r
 print("A2", r)
 data += 1

 r = yield data
 print("data",data)
 print("A3", r)
 # 运行时此后若找不到下一个yield,则会报错StopIteration

my = go()
print("my", my)
print("None", my.send(None))
print(my.send("1"))
print(my.send("2"))
print(my.send("3"))

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

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

③r = yield data

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

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

以上这篇浅谈对yield的初步理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

yield 理解