Skip to main content
 首页 » 编程设计

Python:为函数的后续调用重新初始化函数的默认值

2025年05月04日15java哥

我有一个调用自身来递增和递减堆栈的函数。

我需要多次调用它,我希望它在后续调用中以相同的方式工作

但是,正如预期的那样,它不会重新使用默认值。

我读到这是一个新手陷阱,我也看到了建议的解决方案,但我没能做到

使任何解决方案都有效。

如果能够“fun.reset”就好了

def a(x, stack = [None]): 
    print x,'  ', stack 
    if x > 5: 
        temp = stack.pop() 
    if x <=5: 
        stack.append(1) 
    if stack == []: 
        return     
    a(x + 1) 
 
print a(0) 
print a(2)  #second call 
print a(3)  #third call 

我希望这会起作用,但它不会。

print a(0, [None]) 
print a(2, [None])  #second call 
print a(3, [None])  #third call 

我可以将函数重置为初始状态吗?

如有任何帮助,我们将不胜感激。

请您参考如下方法:

递归调用时显式传递堆栈:

def a(x, stack=None): 
    if stack is None: 
        stack = [None] 
    ... 
    a(x + 1, stack)