Python默认参数有坑???

最近有小伙伴在面试中遇到了“关于函数默认参数的坑”的题目,少数伙伴对此问题理得不是太清楚,今天汇智妹请到汇智动力高级教师邓老师为大家详细讲解一下,帮助不太清楚的小伙伴清晰的梳理一遍。邓老师本次主要从以下三点来讲解:

1.什么是默认参数?

2.函数默认参数的坑是什么?

3.函数默认参数为什么会有坑?

 

一、什么是默认参数

python为了简化函数的调用,提供了默认参数机制,举个例:

这样在调用函数时,就可以不写省略的参数。

 

在定义有默认参数的函数时,需要注意以下两个方面:

1.必选参数必须在前面,默认参数在后;

2.设置何种参数为默认参数?一般来说,将参数值变化小的设置为默认参数。

 

 

二、函数默认参数的坑是什么?

当默认参数使用List时就是个坑,引用一个例子如下:

 

预期返回的结果应该是:

[0,1]

[0,1,2]

然而实际结果是:

三、函数默认参数为什么会有坑?

 

要弄清函数默认参数为什么会有坑,需要知道参数可变与不可变的区别。当默认参数指向可变类型对象和不可变类型对象时,会表现出不同的行为。

 

可变默认参数的表现同上个示例,不可变默认参数的变化情况,看以下示例:

输出的结果是:

 

从结果可以看出,第二次调用时默认参数b不会受第一次调用的影响,因为在函数里面进行计算后,b实际是指向了另外一个对象。而函数使用默认参数时,b指向的还是定义函数时,为b分配的内存地址,这个地址的值是没有改变的。

 

由此可看出,在定义函数默认参数时,解释器会为其参数分配一个地址,且不管是第几次调用,默认值的地址都不会改变,当b的默认值为列表时,b的id就已经定了,后面再用到此默认值,就会使用改变后的结果。

经过邓老师的详细讲解,汇智妹觉得大家应该都明白了Python默认参数的坑的问题,如有更多关于IT技术类的问题,可直接私信汇智妹了解哦!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值