62. Python中,传递不可变对象时,包含可变对象的情况浅析

目录

传递不可变对象是浅拷贝


传递不可变对象是浅拷贝

       传递参数是不可变对象 ( eg: int, float, 字符串, 元组, 布尔值 ), 实际上传递的还是对象的引用; 但在”写操作”时, 会创建一个新的对象拷贝; 这个拷贝使用的是”浅拷贝”, 不是”深拷贝”;

#传递不可变对象时,不可变对象里面包含了子对象是可变的,则方法内修改可变对象,源对象也发生了变化
a = (10,20,[5,6]) #元组内含列表
print("a:",a)
print("a:",id(a))

def test01(m):
    print("m:",id(m))
    m[2][0]=888
    print(m) #新对象
    print("m:",id(m))
test01(a)
print(a)

输出:

D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypy01.py
a: (10, 20, [5, 6])
a: 20404360
m: 20404360
(10, 20, [888, 6])
m: 20404360
(10, 20, [888, 6])

Process finished with exit code 0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的有参函数是指在函数定义需要传递参数的函数。主要有四种参数类型:位置参数、关键字参数、可变位置参数和可变关键字参数。 1. 位置参数:位置参数是指根据参数的位置来确定传递的值,例如:def func(a, b),a和b就是位置参数。调用函数必须按照参数的顺序传递对应的值。 2. 关键字参数:关键字参数是指在函数调用,参数以参数名=参数值的形式传递,例如:func(a=1),其a=1就是关键字参数。调用函数可以不按照参数的顺序传递值,只需要指定参数名即可。 3. 可变位置参数:可变位置参数使用*号作为前缀,在函数定义表示可以接收任意数量的位置参数,这些参数会被打包成一个元组。例如:def func(*args),在调用函数可以传入任意数量的位置参数。 4. 可变关键字参数:可变关键字参数使用**号作为前缀,在函数定义表示可以接收任意数量的关键字参数,这些参数会被打包成一个字典。例如:def func(**kwargs),在调用函数可以传入任意数量的关键字参数。 以上是Python有参函数的大致流程,通过位置参数、关键字参数、可变位置参数和可变关键字参数,可以根据不同的需求灵活地传递参数给函数,使函数具有更强的适应性和扩展性。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python源码学习:Python函数浅析-有参函数](https://blog.csdn.net/qq_33339479/article/details/79793421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值