我用一段代码说明了我的问题:
def foo(n, li = []):
if len(li) > n:
return li
li.append(str(len(li)))
foo(n, li)
return li
if __name__ == '__main__':
print(foo(2))
print(foo(5))
print(foo(2))
print(foo(2, []))
我有一个带有默认参数li
的递归函数。当我调用没有设置参数的函数时,我希望它采用默认值[]
。因此,对于第三次调用,我期望与第一次调用相同的输出。相反,我得到:
['0', '1', '2']
['0', '1', '2', '3', '4', '5']
['0', '1', '2', '3', '4', '5']
['0', '1', '2']
为什么调用li
之间保持foo
的值?