可能重复:
“Least Astonishment” in Python: The Mutable Default Argument
我试图将数字拆分为2的幂,但我的函数会记住我之前调用的结果。
from math import log
#split number in powers of 2
#n : number
#lst : the current list of numbers
def spn(n, lst=list()):
if n==1:
lst.append(n)
return lst
else:
#rdy : the ready-to-add number
rdy=2**((log(n+1,2))-1)
lst.append(rdy)
#n-rdy: the new number to evaluate
return spn(n-rdy, lst)
例如:
spn(1)应返回[1]
spn(3)应返回[2.0,1.0]
spn(7)应返回[4.0,2.0,1.0]
但是只有在我第一次调用函数时才会工作,然后在第一次调用之后我的前一个结果显示为参数。
我该如何解决?