Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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 递归函数默认可变参数_Python - Fatal编程技术网

Python 递归函数默认可变参数

Python 递归函数默认可变参数,python,Python,假设您拥有以下函数:def(…,visited=set()) 在内部,再次调用f() 在此递归调用中,如果未传递VISTER,将创建一个新的VISTER set()?否。当第一次运行def语句时,默认参数只处理一次。因此,如果您没有为访问的传递另一个参数,同一个集合将被重用,并且常常会导致意外的结果 从: 默认值在定义范围内的函数定义点处进行计算,以便 以及下面的重要警告 默认值仅计算一次。当默认值是可变对象(如列表、字典或大多数类的实例)时,这会有所不同。例如,以下函数累积在后续调用中传递给它

假设您拥有以下函数:
def(…,visited=set())

在内部,再次调用
f()


在此递归调用中,如果未传递VISTER,将创建一个新的VISTER set()?

否。当第一次运行
def
语句时,默认参数只处理一次。因此,如果您没有为访问的
传递另一个参数,同一个集合将被重用,并且常常会导致意外的结果

从:

默认值在定义范围内的函数定义点处进行计算,以便

以及下面的重要警告

默认值仅计算一次。当默认值是可变对象(如列表、字典或大多数类的实例)时,这会有所不同。例如,以下函数累积在后续调用中传递给它的参数:


不,它将保持不变。这是一个常见的错误。只需使用
None
作为默认值,如果访问的
为None
,则初始化一个新的空集。您是否了解一般行为:如果是。为什么您希望递归调用的行为与任何其他函数调用的行为有所不同?
例如,以下函数在后续调用中累积传递给它的参数:
什么函数?