Python中函数默认值问题

来源:互联网 发布:开淘宝店铺要多少钱 编辑:程序博客网 时间:2024/06/13 09:12

如果使用的参数默认值是可变的(例如列表),则可能引发烦人的问题。当执行def时,默认参数值只能使用一次,在函数调用期间将保留此关联。这意味着参数名相关联的默认对象的变化,将在函数调用间保持一致。如下例子:

def func(element,listParam=[])    listParam.append(element)    return listParam

调用:

>>>func(1)[1]>>>func(2)[1,2]>>>func(3)[1,2,3]>>>func(4,[7,8,9])[7,8,9,4]>>>func(5)[1,2,3,5]

第一次调用func函数时使用listParam的默认值,在列表中填加1,返回[1]。使用listParam的默认值进行第二次调用时,即function(2),2仍会连接到默认对象上。但在前面的调用中该对象修改过。如果该对象是可变的并且修改过,在所有的调用中都保留这些修改。当不使用默认值时,就会按照传入的参数值进行变化。所以一般不要使用可变的默认值。

原创粉丝点击