Python函数无法初始化参数值

Python函数无法初始化参数值,python,function,recursion,Python,Function,Recursion,我有一个函数,它在多层嵌套字典arg1上迭代,在每次迭代中收集数据,如下所示: def dummy(arg1, found=[], index=0): found.append('xyz') for d in arg1: dummy(arg1[d], found, index+1) return found 我的函数按支持的方式工作,问题是当我第二次调用函数时,find参数保留了前一次函数调用的值,即第二次调用的返回值包括前一次调用的返回值。我必须加

我有一个函数,它在多层嵌套字典arg1上迭代,在每次迭代中收集数据,如下所示:

def dummy(arg1, found=[], index=0):
    found.append('xyz')

    for d in arg1:
        dummy(arg1[d], found, index+1)

    return found
我的函数按支持的方式工作,问题是当我第二次调用函数时,find参数保留了前一次函数调用的值,即第二次调用的返回值包括前一次调用的返回值。我必须加上这样的东西

if index == 0:
   found=list() # restart value
返回函数的开头,以初始化找到的参数的值。知道为什么会这样吗?这是虫子吗

不,这不是一个bug;看

要避免这种情况,您应该执行以下操作:

def dummy(arg1, found=None, index=0):
    if found is None:
        found = []
    ...
或者更好地看到:

sentinel = object()
def dummy(arg1, found=sentinel, index=0):
    if found is sentinel:
        found = []
    ...