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