如何以及为什么在Python中的调用之间保持函数参数引用?

时间:2015-01-20 11:52:08

标签: python recursion function-parameter

我用一段代码说明了我的问题:

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的值?

0 个答案:

没有答案