对yield的初步理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对yield的初步理解相关的知识,希望对你有一定的参考价值。
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"))
①my.send(None): 意思为启动协程,此步会返回第一个yield后面的data值。
②send一次,运行的代码是两个yield之间的代码,最后返回后一个yield后面的data值,若缺少后一个yield语句,则会报错“Stoplteration”
③r = yield data
r 为my.send(‘传入的数据‘) 传入的数据
data为此段运行完返回的数据
感谢大家的评论
以上是关于对yield的初步理解的主要内容,如果未能解决你的问题,请参考以下文章