什么是默认值?什么时候需设置默认值?_Python实验室:千万别把函数默认值设为「」,这个错误你犯过吗?...

前言

在Python的函数定义中,我们可以给函数形参指定一个默认值,这样,在函数使用时,如果默认值已满足我们的需求,我们就可以略过该参数;如果不满足,我们也可以指定其他值,这样可以使设计的函数兼顾易用性与灵活性。但在Python中有一点需要注意,千万不要以 '[]' 作为参数默认值。

f304792b40084615c5da7b6222785488.png

探索

为什么不能将 '[]' 作为函数默认值呢?我们从一个简单的例子开始:

48f6839a4a349f105603c0e872cf6230.png

运行结果:

[5]

[5, 5]

[5, 5, 5]

三次调用func(),期望的结果是每次都返回一个[5],但实际上返回的列表中5的个数逐次增多。这样的结果表明,似乎有个列表被缓存在函数中,每次调用的时候都会对这个列表进行操作。

我们在调用中间插入一些指定参数值的调用,看看结果如何:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数默认值参数是在定义函数时为参数指定一个默认值,如果在调用函数时没有传递该参数,则会使用默认值。例如,下面的函数中,参数b和c都有默认值。 ```python def my_function(a, b=0, c=1): print(a + b + c) ``` 在调用该函数时,可以只传递一个参数: ```python my_function(5) # 输出:6 ``` 也可以传递多个参数: ```python my_function(5, 2, 3) # 输出:10 ``` 当使用默认值参数时,要注意以下几点: 1. 默认值参数应该放在参数列表的最后面。 2. 如果函数定义了多个参数,但只想给其中某些参数指定默认值,可以使用参数名来指定默认值,例如: ```python def my_function(a, b=0, c=1, d=2): print(a + b + c + d) ``` 在调用该函数时,可以只给c和d参数指定默认值: ```python my_function(5, c=3, d=4) # 输出:12 ``` 3. 如果默认值参数是可变对象(例如列表或字典),则要注意每次调用函数时是否修改了该对象。因为默认值只在函数定义时计算一次,如果在函数中修改了该对象,则下次调用该函数时会使用修改后的对象。例如: ```python def my_function(a, b=[]): b.append(a) print(b) my_function(1) # 输出:[1] my_function(2) # 输出:[1, 2] my_function(3) # 输出:[1, 2, 3] ``` 可以看到,每次调用该函数时,都会使用上一次修改后的列表。如果想要避免这种情况,可以使用不可变对象作为默认值参数,例如: ```python def my_function(a, b=None): if b is None: b = [] b.append(a) print(b) my_function(1) # 输出:[1] my_function(2) # 输出:[2] my_function(3) # 输出:[3] ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值