Код: Выделить всё
def gen():
a = yield "Hello World"
a_ = a + 1 #Imagine that on my computer "+ 1" is an expensive operation
print "a_ = ", a_
b = yield a_
print "b =", b
print "a_ =", a_
yield b
Код: Выделить всё
>>> g = gen()
>>> g.next()
>>> g.send(42)
a_ = 43
43
Код: Выделить всё
>>> newG = clonify(g)
>>> newG.send(7)
b = 7
a_ = 43
7
Код: Выделить всё
>>> g.send(11)
b = 11
a_ = 43
11
Примечание: itertools.tee этого не сделает. работает, потому что он не обрабатывает отправку.
Примечание. Меня интересуют только генераторы, созданные путем размещения операторов yield в функции. .
Подробнее здесь: https://stackoverflow.com/questions/298 ... -generator
Мобильная версия