Discuss / Python / 运行这段代码,看一下注释,会好理解一些

运行这段代码,看一下注释,会好理解一些

Topic source

Grey_kindle

#1 Created at ... [Delete] [Delete and Lock User]
def consumer():
    print("[Consumer] Started")
    r = ''
    while True:
        n = yield r  # send(None)后代码执行到这里
        print("[Consumer] Yield return: %s" % str(n))
        if not n:
            return
        print('[CONSUMER] Consuming %s...' % n)
        r = '200 OK'


def produce(c):
    initY = c.send(None)  # 若不发送None,会得到`TypeError: can't send non-None value to a just-started generator`
    # 这个None并不会作为第一次yield的返回值,它的作用仅仅是让生成器启动
    # consumer启动, 打印"[Consumer] Started",yield出r的初始值
    print("[PRODUCER] Init Y: %s" % str(initY))
    n = 0
    while n < 5:
        n = n + 1
        print('[PRODUCER] Producing %s...' % n)
        r = c.send(n)
        print('[PRODUCER] Consumer return: %s' % r)
    c.close()




c = consumer()
produce(c)

  • 1

Reply