为什么说python里面函数参数的默认值最好不要使用可变类型

之前发布过Python中函数的介绍:Python中函数的介绍 ,今天来做一个小小的补充说明:为什么说python里面函数参数的默认值最好不要使用可变类型

Python中,函数参数的默认值是在函数定义时计算的,而不是在每次函数调用时计算。当默认值是可变类型(如列表、字典等)时,这个默认值在函数定义时就会被创建并分配给参数。当函数被调用时,如果没有显式地传递该参数,函数将使用该默认值。

可变类型的默认值在函数定义时只会被创建一次,然后会在后续函数调用中重复使用。这意味着,如果在函数中修改了这个默认值,它将在后续的函数调用中保持修改后的值,而不是返回最初的默认值。

接下来我们通过一个例子演示一下:

def add(a:int,b:list=[]):   # 定义函数的时候就创建了列表
    print(id(b))
    b.append(a)
    print(b)


add(1)
add(2)
add(3)

2d00902ed2c44345e8975ba2da38627b.png

从上面的运行结果,我们可以看出:

如果在函数的定义中,参数默认值使用可变类型,那么可变类型会在函数定义的时候就进行创建,如果使用不当的话,可能得到的效果与我们的预期不一致。

End

 
 
 
 
 
 
 
 
 
 
想进学习交流群和同行一起探讨交流的可以加我好友(xiaobotester),如果觉得文章对你有帮助的话,欢迎点赞转发~
 
 
👇👇👇

关注公众号,测试干货及时送达3c58e2883fcbe74bf1e5dddb8a91c525.png

往期精彩回顾

e3d587c029840c0abd5bb85da4bf5ae6.png

一篇文章为你揭秘pytest的基本用法

Anaconda-一个开源的Python发行版本

Python脚本读取Consul配置信息

Python中使用pickle库进行数据的序列化存储

Python小知识-函数传参怎么设置期望的传参类型?

python解析xml遇到的问题分享(命名空间有关)

分享一下最近使用python字典取值用法的收获

Python里面怎么判断某个字符串是否包含列表中的某一个元素

Python中列表的extend()方法介绍

Python中鸭子类型与多态介绍

Python中的抽象基类介绍

Python中的type与isinstance的区别

Python中类的属性、多继承、自省机制中的__mro__、__dict__ 和dir介绍

Python中__new__和__init__的区别与联系

5f21ade229502b2abec28e8eb4ccad13.png

如果你想系统的学习提升自己的测试技能,如果苦于没有学习资料的话,不放趁着618的时候采购一波书籍吧。618,清华社 IT BOOK 多得图书活动开始啦!活动时间为 2023 年 6 月 7 日至 6 月 18 日,清华 社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多 个 IT 开发领域,适合不同层次的读者。全场 5 折,扫码领券更有优惠哦!快来京东点击链接(https://pro.m.jd.com/mall/active/3Rho97HkMaGFycLzAWfFdvZdyvRn/index.html) IT BOOK 多得(或扫描京东二维码)查看详情吧!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小博测试成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值