Python在递归函数中的奇怪屈服行为

时间:2018-06-04 08:20:56

标签: python recursion yield

这只是一个演示代码,用于理解递归函数中的yield行为。我希望它返回一个可迭代的列表[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 :(得分:2)

你需要yield from yield_test()并反转你职能中yield的顺序:

def yield_test(input):
    yield input

    if input > 3:
        yield from yield_test(input-1)