用断点很容易看到执行过程
Topic source首先,‘=’不是等值,是赋值哈。
yield可以返回值,yield语句本身也是有值的,可以通过send()函数的参数指定~
consumer()中的 n = yield r 语句,可以分开2步理解: 1、yiled r,即向调用方返回r 2、赋值语句n = xxxx,等待调用方send()函数指定的yield r语句的值,将该值赋值给n
produce()中的 r = c.send(1)语句,这一步的操作可以分开2步理解:
1、将生成器上一次挂起的yield语句的值指定为1,则consumer()中的n = xxxx就是n=1了; 2、相当于执行r = next(c),consumer从上次挂起的yield语句处继续往下执行,再次执行到n = yield r就挂起,将r返回给produce(),n则等待调用方指定的yield r的值
边看边说,感觉也不是很清楚,可以自己查找下生成器send()哈。
- 1
Mr_RightMen
只要注意两点 1.遇到yield就跳出 2.生成器本身也会有值返回,不指定,默认就是None,这里循环到最后,yield返回的值就是200 OK