Python浅拷贝与深拷贝

本文详细介绍了Python中的浅拷贝和深拷贝的概念及其区别。通过具体实例展示了浅拷贝仅复制引用而非内容的特点,以及深拷贝如何实现对象及其内部元素的完全独立复制。此外,还探讨了copy.copy()对不同数据类型的影响。

Python浅拷贝与深拷贝

上一篇文章: Python文件夹处理
下一篇文章: Python==与is对比

1、浅拷贝

浅拷贝:拷贝了引用,没有拷贝内容。

实例:

a=[1,2,3]
b=a

print("a的id:",id(a))
print("b的id:",id(b))

a.append(4)
print(a)
print(b)

结果:

a=[1,2,3]
b=a

print("a的id:",id(a))
print("b的id:",id(b))

a.append(4)
print(a)
print(b)

2、深拷贝

深拷贝:对于一个对象所有层次的拷贝(递归)。

使用copy.deepcopy()完成深拷贝

实例:

import copy
a=[1,2,3]
b=[4,5,6]

c=[a,b]

d=c
e=copy.deepcopy(c)




print("c的值",c)
print("d的值",d)
print("e的值",e)

print("c的id:",id(c))
print("d的id:",id(d))
print("e的id:",id(e))

a.append(7)
print("c的值",c)
print("d的值",d)
print("e的值",e)

print("c的id:",id(c))
print("d的id:",id(d))
print("e的id:",id(e))

结果:

c的值 [[1, 2, 3], [4, 5, 6]]
d的值 [[1, 2, 3], [4, 5, 6]]
e的值 [[1, 2, 3], [4, 5, 6]]
c的id: 4329011592
d的id: 4329011592
e的id: 4333645768
c的值 [[1, 2, 3, 7], [4, 5, 6]]
d的值 [[1, 2, 3, 7], [4, 5, 6]]
e的值 [[1, 2, 3], [4, 5, 6]]
c的id: 4329011592
d的id: 4329011592
e的id: 4333645768

3、cope.cope()对可变类型和不可变类型影响不同

实例:

import copy
a=[1,2,3]
b=copy.copy(a)

print("a的id:",id(a))
print("b的id:",id(b))

a.append(4)
print(a)
print(b)


#不可变类型
c=(1,2,3)
d=copy.copy(c)

print("c的id:",id(c))
print("d的id:",id(d))

结果:

a的id: 4372057096
b的id: 4372055816
[1, 2, 3, 4]
[1, 2, 3]
c的id: 4372006736
d的id: 4372006736
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值