Python函数无法初始化参数值
我有一个函数,它在多层嵌套字典arg1上迭代,在每次迭代中收集数据,如下所示: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参数保留了前一次函数调用的值,即第二次调用的返回值包括前一次调用的返回值。我必须加
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 = []
...