Python странное поведение выхода в рекурсивной функции - PullRequest
0 голосов
/ 04 июня 2018

Это всего лишь демонстрационный код для понимания поведения выхода в рекурсивной функции.Я ожидаю, что он вернет итеративный список [5,4,3], но он останавливается на первой итерации и возвращает только [5]

Может кто-нибудь объяснить, почему это происходит?

def yield_test(input):
    if input > 3:
        yield_test(input-1)

    yield input

print(list(yield_test(5)))

выход: [5] Ожидаемый выход: [5, 4, 3]

1 Ответ

0 голосов
/ 04 июня 2018

Вам нужно yield from yield_test() и изменить порядок yield с в вашей функции:

def yield_test(input):
    yield input

    if input > 3:
        yield from yield_test(input-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...