我们什么时候在函数 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 = []
现在,如果您只向函数传递一个参数,“结果”将是一个空列表。
如果您在函数定义中启动列表,通过多次调用该函数,“结果”不会重置,它会保留以前调用的值。
我对函数中的参数有疑问,特别是在函数调用中初始化数组或其他数据结构,如下所示:
def helper(root, result = []):
...
我的问题是,上面的和做的有什么区别:
def helper(root):
result = []
我可以理解为什么如果我们要 运行 递归,这是必要的,即在某些情况下我们需要使用第一种情况。
但是还有其他的例子吗,我说在某些情况下递归是必要的,或者我们总是可以使用后者吗?
谢谢
Python 对列表使用指针,因此在函数定义中初始化列表或任何其他可变对象不是一个好主意。 最好的方法是这样的:
def helper(root, result=None):
if isinstance(result, type(None)):
result = []
现在,如果您只向函数传递一个参数,“结果”将是一个空列表。 如果您在函数定义中启动列表,通过多次调用该函数,“结果”不会重置,它会保留以前调用的值。