Развертывание задания Flink завершается с ошибкой StackOverflow из-за рекурсивного вызова ParserATNSimulator

Это может помочь кому-то. Вот генератор, на который не влияет функция отправки. Он принимает параметр числа при создании экземпляра и не подвержен влиянию send:

>>> def double_number(number):
...     while True:
...         number *=2 
...         yield number
... 
>>> c = double_number(4)
>>> c.send(None)
8
>>> c.next()
16
>>> c.next()
32
>>> c.send(8)
64
>>> c.send(8)
128
>>> c.send(8)
256

Теперь вот как вы будете делать один и тот же тип функции с помощью send, поэтому на каждой итерации вы можете изменить значение числа :

def double_number(number):
    while True:
        number *= 2
        number = yield number

Вот как это выглядит, так как вы можете видеть, что посылка нового значения для числа меняет результат:

>>> def double_number(number):
...     while True:
...         number *= 2
...         number = yield number
...
>>> c = double_number(4)
>>> 
>>> c.send(None)
8
>>> c.send(5) #10
10
>>> c.send(1500) #3000
3000
>>> c.send(3) #6
6

Вы также можете поместить это в петля как таковая:

for x in range(10):
    n = c.send(n)
    print n

Для получения дополнительной справки ознакомьтесь с этим большим учебником .

0
задан HFBrowning 17 January 2019 в 00:45
поделиться