Python中函数默认值问题

如果使用的参数默认值是可变的(例如列表),则可能引发烦人的问题。当执行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仍会连接到默认对象上。但在前面的调用中该对象修改过。如果该对象是可变的并且修改过,在所有的调用中都保留这些修改。当不使用默认值时,就会按照传入的参数值进行变化。所以一般不要使用可变的默认值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值