认识python基础 十二 深浅拷贝

深浅拷贝需要导入copy模块

深拷贝用到的是copy.deepcopy() : 外层的对象和内部的元素都拷贝一遍。

浅拷贝用到的是copy.copy() : 拷贝最外层的对象,内部的元素只拷贝一个引用。

# 浅拷贝: (数据半共享)会创建对象
import copy
a1 = [1,2,3,[4,5]]
a2 = copy.copy(a1)    # a1 a2 都是独立对象

# 可以通过id()来查看变量的内存地址可以知道差异
print(a1,id(a1))    # [1, 2, 3, [4, 5]] 2362273125384
print(a2,id(a2))    # [1, 2, 3, [4, 5]] 2362691148104

a1.append(7)

print(a1,id(a1))    # [1, 2, 3, [4, 5], 7] 2362273125384
print(a2,id(a2))    # [1, 2, 3, [4, 5]] 2362691148104

# 浅拷贝: 外层的内存地址不同,但是内层的内存地址相同
print(id(a1[3]))
print(id(a2[3]))


# 深拷贝 : 数据完全不共享,两者之间完全独立
b1 = [1,2,3,[4,5]]
b2 = copy.deepcopy(b1)    # b1 b2 之间完全独立,互不干扰

# 通过id()查看
print(b1,id(b1))    # [1, 2, 3, [4, 5]] 1717067507400
print(b2,id(b2))    # [1, 2, 3, [4, 5]] 1717067507144

b1.append(6)

print(b1,id(b1))    # [1, 2, 3, [4, 5], 6] 1717067507400
print(b2,id(b2))    # [1, 2, 3, [4, 5]] 1717067507144

b1[3].append(3)

print(b1,id(b1))    # [1, 2, 3, [4, 5, 3], 6] 1717067507400
print(b2,id(b2))    # [1, 2, 3, [4, 5]] 1717067507144

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值