[英]Python: re-initialize a function's default value for subsequent calls to the function
我有一個函數,它自己調用以遞增和遞減堆棧。
我需要多次調用它,並且我希望它在以后的調用中以相同的方式工作
但是,正如預期的那樣,它不會重復使用默認值。
我已經讀到這是一個新手陷阱,並且已經看到了建議的解決方案,但我一直無法
使任何解決方案有效。
能夠“ 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)
def a(x, stack = None):
if stack is None:
stack = [None]
...
發生此問題的原因是您修改了可變的默認參數。 正如Kai的回答一樣,通常可以通過不修改默認參數來解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.