这只是一个演示代码,用于理解递归函数中的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]
答案 0 :(得分:2)
你需要yield from yield_test()
并反转你职能中yield
的顺序:
def yield_test(input):
yield input
if input > 3:
yield from yield_test(input-1)