老师,为什么customer()函数要写while true呢?
老师,为什么customer()函数要写while true呢?prodoct()函数内不是已经循环执行send(i)函数了吗?
22
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小猿
2023-08-07 14:32:40
同学,你好!while true 是为了取send(i)发送给yield的值,send一个值,yield 会取出就个值,如果不用循环就只能取出第一次传递过去的值
同学可理解下课上代码:
上图f3.send(2)、f3.send(3)是一个一个发送值的,等同学于生产者中for循环内的c.send()
但是fun3函数接收的时候,,老师也是逐个接收的,有3个yeild,没有使用循环接收。在是生产者、消费者老师是使用循环来取yield值,看到yield 当前调用函数执行完毕,再调用send()继续执行fun3函数的后续代码。
send(None)执行的是35行代码,将yield 1 赋给num,num值为1 作为函数返回值,r1值为1
f3.send(2)执行的是36、37行代码num值为2,num1的值为12作为函数返回值,所以r2值也是12
f3.send(3)执行38、39行代码,原理是相同的。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星