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);我会用这个吗?还是我应该总是用上面第二种方式来组织呢?哈哈。关于好的问题/代码,还有其他网站建议吗?