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