python 字典中的copy函数的浅拷贝问题

本文详细解释了Python中浅拷贝与深拷贝的区别,并通过具体示例展示了这两种拷贝方式如何影响可变与不可变类型的对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python浅拷贝与深拷贝

浅拷贝是指拷贝的只是原对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用。

深拷贝是复制一个内容而不是简单的复制引用而已

换句话说:有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存
也就是说,在浅拷贝情况下,不同引用指向的是同一块内存,改其中一个引用,那么其他引用也会跟着改变

举个例子:

myDict={'a':2,3:['x','y'],'joe':'smith'}
newDict=myDict.copy()
newDict['a']=7
newDict[3][0]='z'
print myDict
print newDict

运行结果

{'a': 2, 3: ['z', 'y'], 'joe': 'smith'}
{'a': 7, 3: ['z', 'y'], 'joe': 'smith'}

既然是浅拷贝,应该键a的值都为7才对,后经过查阅资料得知,如果对象本身是不可变的,那么浅拷贝时也会产生两个值

可变类型: 列表,字典
不可变类型:数字,字符串,元组

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值