как эквивалент
ая с Python 2.5 есть возможностьsend()
, throw()
, close()
в генератор. Внутри определенного генератора можно «перехватить» отправленные данные, выполнив что-то вроде:
def gen():
while True:
x = (yield)
if x == 3:
print('received 3!!')
break
else:
yield x
Я пытаюсь играть с чем-то вроде:
def gen2():
while True:
yield (yield)
Заметил, что это законный генератор, который что-то делает .. Первое, что я пытаюсь выяснить, это:
Есть ли хорошее применение для такого письма?
Также, когда вы делаете что-то вроде:
g = gen2()
next(g)
g.send(10) # output: 10
g.send(2) # output: nothing
g.send(3) # output: 3
g.send(44) # output: nothing
Почему каждый второй «отправить» ничего не делает?