我从一本书中读到了以下代码,并对此有一些问题。
def coroutine(func):
def start(*args, **kwargs):
g = func(*args, **kwargs)
g.next()
return g
return start
@coroutine
def receiver():
print("Ready to receive")
while True:
n = (yield)
print("Got %s" % n)
r = receiver()
r.send("hello, world")通过使用coroutine,不需要初始.next()。我的理解是,如果是r = receiver(),那么就是r = start,所以当我调用r.send()时,它等于start.send(),然后我再次调用.next(),对吧?但是结果并不是我所期望的。
发布于 2011-10-26 12:06:46
你的问题不是协程。你误解了函数装饰器。在r = receiver()之后,r不是开始,而是g。仔细阅读函数修饰,你就会明白是怎么回事了。
https://stackoverflow.com/questions/7898296
复制相似问题