我正在解决一些编码问题,这些问题要求我使用可选参数来实现递归函数。
我遇到了一些我不完全理解的行为,如下面定义的功能所示。
def f(l=list()):
l.append('test')
print(l)
我希望每次调用f()时都将['test']打印到控制台,而不带可选参数。但是,每个函数调用列表都会“增长”:
f() --> ['test']
f() --> ['test', 'test']
f() --> ['test', 'test', 'test']
以此类推。我假设,在不传递任何参数的情况下调用f()时,每次调用时列表l都会被初始化为空列表。
但是,函数的局部变量似乎在第一次调用该函数之后被“保存”,然后在随后的调用中重新使用...这不是我期望的,尤其是我期望列表l由于调用了空函数,被“强制”重置为空列表。
我们将不胜感激。