我们什么时候在函数 vs 中初始化函数调用作为参数?

when do we initialise a function call within the function vs as an argument?

我对函数中的参数有疑问,特别是在函数调用中初始化数组或其他数据结构,如下所示:

def helper(root, result = []):
    ...

我的问题是,上面的和做的有什么区别:

def helper(root): 
    result = []

我可以理解为什么如果我们要 运行 递归,这是必要的,即在某些情况下我们需要使用第一种情况。

但是还有其他的例子吗,我说在某些情况下递归是必要的,或者我们总是可以使用后者吗?

谢谢

Python 对列表使用指针,因此在函数定义中初始化列表或任何其他可变对象不是一个好主意。 最好的方法是这样的:

def helper(root, result=None):
    if isinstance(result, type(None)):
        result = []

现在,如果您只向函数传递一个参数,“结果”将是一个空列表。 如果您在函数定义中启动列表,通过多次调用该函数,“结果”不会重置,它会保留以前调用的值。