Discuss / Python / 终于看懂“n = yield r”不是一个赋值语句了

终于看懂“n = yield r”不是一个赋值语句了

Topic source

Confidendure

#1 Created at ... [Delete] [Delete and Lock User]

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 。


  • 1

Reply