python 参数为空_python中函数的默认参数是空数组

函数的默认参数 如果为空数组:

def default_para_without_trap(para=[], value=0):

print(id(para))

para.append(value)

print(id(para))

return para

print('第一步')

print('函数返回值:{}'.format(default_para_without_trap(value=100)))

print('第二步')

print('函数返回值:{}'.format(default_para_without_trap(value=50)))

结果:

第一步

1652247234376

1652247234376

函数返回值:[100]

第二步

1652247234376

1652247234376

函数返回值:[100, 50]

可以看出指向的都是同一个内存地址,因为数组是可变容器,里面的值发生改变,但指向的内存地址没有发生改变,所以第二次调用的是第一次已经添加了数据的数组。

而不可变数据类型,因为它的值是如果改变了,内存地址也要相应的变化,所以不会存在这种情况。

所以应该在每次调用时初始化

def default_para_without_trap(para=None, value=0):

print(id(para))

if para is None:

para = []

print(id(para))

para.append(value)

print(id(para))

return para

print('第一步')

print('函数返回值:{}'.format(default_para_without_trap(value=100)))

print('第二步')

print('函数返回值:{}'.format(default_para_without_trap(value=50)))

第一步

1809481008

1743164737352

1743164737352

函数返回值:[100]

第二步

1809481008

1743164737352

1743164737352

函数返回值:[50]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值