python函数参数列表_python函数的列表参数传递

今天看书的时候发现对python函数的参数传递不是很了解,于是上网查询了一下资料。首先,看一下以下的代码:

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

para.append(value)

return paraprint('第一步')

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

print('第二步')

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

预测:

第一步

函数返回值:[100]

第二步

函数返回值:[50]

实际运行结果:

第一步

函数返回值:[100]

第二步

函数返回值:[100, 50]

这是因为没有传递列表参数,所以这里使用了默认的para参数,再看以下代码:

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

print('id(para)={},para={}'.format(id(para),para))

para.append(value)

return paraprint('第一步')

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

print('第二步')print('函数返回值:{}'.format(default_para_trap(value=50)))

代码运行结果:

第一步

id(para)=43268552,para=[]

函数返回值:[100]

第二步

id(para)=43268552,para=[100]

函数返回值:[100, 50]

从上面结果中可以看出,因为两次调用函数都没有传递para参数,所以默认使用初始值para=[](由两次调用的参数id相同可以发现)。如果想要达到预期的效果,只需要在函数体添加判断即可:

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

if not para: #初始化para参数

para = []

para.append(value)

return para

print('第一步')

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

print('第二步')print('函数返回值:{}'.format(default_para_trap(value=50)))

运行结果:

第一步

函数返回值:[100]

第二步函数返回值:[50]

或者以下代码:

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

if para is None:

para = []

para.append(value)

return paraprint('第一步')

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

print('第二步')

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

注:判断是否为None的时候可以使用"==",建议使用“is"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值