python在后续函数调用期间如何处理省略的可选参数?

时间:2019-06-18 18:27:24

标签: python function scope arguments

我正在解决一些编码问题,这些问题要求我使用可选参数来实现递归函数。

我遇到了一些我不完全理解的行为,如下面定义的功能所示。

def f(l=list()):
    l.append('test')
    print(l)

我希望每次调用f()时都将['test']打印到控制台,而不带可选参数。但是,每个函数调用列表都会“增长”:

f() --> ['test']
f() --> ['test', 'test']
f() --> ['test', 'test', 'test']

以此类推。我假设,在不传递任何参数的情况下调用f()时,每次调用时列表l都会被初始化为空列表。

但是,函数的局部变量似乎在第一次调用该函数之后被“保存”,然后在随后的调用中重新使用...这不是我期望的,尤其是我期望列表l由于调用了空函数,被“强制”重置为空列表。

我们将不胜感激。

0 个答案:

没有答案