def consumer():
r = ''
while True:
n = yield r
if not n:
return
else:
print('[CONSUMER] Consuming %s...' % n)
r = '200 OK'
def producer(c):
c.send(None)
n = 0
while n < 5:
n = n + 1
print('[PRODUCER] Producing %s...' % n)
r = c.send(n)
print('[PRODUCER] Consuming %s...' % r)
c.close()
c = consumer()
producer(c)
年青不熬夜
大家比较难理解的是consumer()函数中的 n = yield r这个语句。
首先要明确的一点是这既是一个赋值语句又不是一个赋值语句。 在什么情况下这是一个赋值语句呢? 当我们在使用c.send(x)的时候,这个语句可以简化成这样:n = yield 这条语句的意思是把c.send(x)中的x赋值给n, 函数consumer()也不会产生中断,因为yield在此的作用仅仅是接收参数而已。 在什么情况下这是一个generator中普通的yield呢? 在没有使用c.send(x)的时候。 不知道这样解释是否清楚