def consumer():
r = ''
while True:
n = yield r
if not n:
return
print('[CONSUMER] Consuming %s...' % n)
r = '200 OK'
这段代码的含义理解如下:
if not n:
return
用于控制c.send(None)
然后,send()方法可以将一个值传递给yield表达式,但是其返回值来自下一个yield表达式,而不是接收send()传递的值的yield表达式。
所以循环语句第一次运行时,n = yield r只会纯粹的接收传递过来的n值,yield r不执行;第二次运行循环语句时,r已经重新赋值为‘200k’,执行yield r,即返回r的参数给调用函数produce 。
Confidendure
def consumer(): r = '' while True: n = yield r if not n: return print('[CONSUMER] Consuming %s...' % n) r = '200 OK' 这段代码的含义理解如下: if not n: return 用于控制c.send(None) 然后,send()方法可以将一个值传递给yield表达式,但是其返回值来自下一个yield表达式,而不是接收send()传递的值的yield表达式。 所以循环语句第一次运行时,n = yield r只会纯粹的接收传递过来的n值,yield r不执行;第二次运行循环语句时,r已经重新赋值为‘200k’,执行yield r,即返回r的参数给调用函数produce 。