Сопрограмм в Python
Я прочитал следующий код из книги, и у меня есть несколько вопросов по этому поводу.
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(), верно? Но результат оказался совсем не таким, как я ожидал.