Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么时候在函数vs中初始化函数调用作为参数?_Python_Function_Arguments - Fatal编程技术网

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

Python 什么时候在函数vs中初始化函数调用作为参数?,python,function,arguments,Python,Function,Arguments,我对函数中的参数有一个问题,特别是初始化函数调用中的数组或其他数据结构,如下所示: def helper(root, result = []): ... 我的问题是,上述与实际操作的区别是什么: def helper(root): result = [] 我可以理解,如果我们要运行递归,为什么这是必要的,也就是说,在某些情况下,我们需要使用第一种情况 但是还有其他的例子吗?我说的对吗?在某些情况下递归是必要的,或者我们总是可以用后者来代替 感谢Python对列表使用指针,所

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

def helper(root, result = []):
    ...
我的问题是,上述与实际操作的区别是什么:

def helper(root): 
    result = []
我可以理解,如果我们要运行递归,为什么这是必要的,也就是说,在某些情况下,我们需要使用第一种情况

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


感谢

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

def helper(root, result=None):
    if isinstance(result, type(None)):
        result = []
现在,如果只向函数传递一个参数,“结果”将是一个空列表。
如果在函数定义中启动列表,通过多次调用函数,“result”将不会重置,并且它将保留以前调用的值。

永远不要使用第一种形式:好的,谢谢,只是我在LeetCode的许多解决方案中都看到了它这是寻找好代码的最糟糕的地方。rda,def辅助程序如何(根,计数器=0);我会用这个吗?还是我应该总是用上面第二种方式来组织呢?哈哈。关于好的问题/代码,还有其他网站建议吗?