python中的赋值,浅拷贝及深拷贝

赋值,浅拷贝,深拷贝

赋值:对统一对象的引用

a=[1,2,3,[1,2,3]]
b=a
#指向同一对象
id(a)    #1817942608328
id(b)    #1817942608328
#对a进行操作,则b也会改变
a.append(5)   #a=[1, 2, 3, [1, 2, 3], 5]
print(b)      #b=[1, 2, 3, [1, 2, 3], 5]
#对b进行操作,则a也会改变
b.append(6)   #b=[1, 2, 3, [1, 2, 3], 5,6]
print(a)      #a=[1, 2, 3, [1, 2, 3], 5,6]

浅拷贝:父对象指向独立对象,但子对象指向同一对象

a=[1,2,3,[1,2,3]]
b=copy.copy(a)
#父对象指向独立对象,子对象指向同一对象
id(a[3])   #1835983297672
id(b[3])   #1835983297672
#对a的父对象进行操作,b不会改变
a.append(4)   #a=[1,2,3,[1,2,3],4]
print(b)      #b=[1,2,3,[1,2,3]]
#对a的子对象进行操作,则b也会变化
a[3].append(4)  #a=[1,2,3,[1,2,3,4],4]
print(b)        #b=[1,2,3,[1,2,3,4]]

深拷贝:完全拷贝父对象及子对象,两者完全独立

a=[1,2,3,[1,2,3]]
b.copy.deepcopy(a)
#父对象指向对立对象,子对象也指向独立对象
id(a[3])      #1835984806280
id(b[3])      #1835987128648
#对a的父对象进行操作,b不会变化
a.append(4)   #a=[1, 2, 3, [1, 2, 3], 4]
print(b)      #b=[1, 2, 3, [1, 2, 3]]
#对a的子对象进行操作,b不会变化
a[3].append(4)  #a=[1, 2, 3, [1, 2, 3,4], 4]
print(b)        #b=[1, 2, 3, [1, 2, 3]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值