Discuss / Python / yield和send()

yield和send()

Topic source

def consumer(): r1 = '' while True: n1 = yield r1 # 获取n值,返回r1值给r if not n1: return print('[CONSUMER] Consuming %s...' % n) r1 = '200 OK'

def produce(c): c.send(None) # 第一次调用时,使用send(None) n = 0 while n < 5: n = n + 1 print('[PRODUCER] Producing %s...' % n) r = c.send(n)

# send转到consumer()时:(yield r)表达式被赋予了n值 # consumer()执行完返回:r 获取了yield r1 的参数值 r1

print('[PRODUCER] Consumer return: %s' % r)

c.close() c = consumer() produce(c)

# send()和next()在一定意义上作用是相似的,区别是send()可以传递yield表达式的值进去,而next()不能传递特定的值,只能传递None进去


  • 1

Reply