Python 直接赋值、浅拷贝和深度拷贝

Python 直接赋值、浅拷贝和深度拷贝

直接赋值

直接赋值:其实就是对象的引用(别名)。

a=[1,2,3,4,{0,1,2},10]
#直接赋值,a、b指向同一个地址
b = a		#b=[1, 2, 3, 4, {0, 1, 2}, 10]
a.append(5)	#a追加5,a指向的地址所存储的值追加5
b			#b引用同一地址的值 [1, 2, 3, 4, {0, 1, 2}, 10, 5]

浅拷贝

浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

a=[1,2,3,4,[0,1,2],10]
#浅拷贝	[1, 2, 3, 4, [0, 1, 2], 10]
b=a.copy()		
#a本身追加数据,b不会改变
a.append(0)		#[1, 2, 3, 4, [0, 1, 2], 10, 0]
b				#[1, 2, 3, 4, [0, 1, 2], 10]
#a的子对象追加数据,b的子对象会随之改变
a[4].apppend(4)		# [1, 2, 3, 4, [0, 1, 2, 4], 10, 0]
b					#[1, 2, 3, 4, [0, 1, 2, 4], 10]

深拷贝

from copy import deepcopy
a=[1,2,3,4,[0,1,2],10]
b=deepcopy(a)		#b=[1, 2, 3, 4, [0, 1, 2], 10]
#修改a子对象
a[4].append(5)		#a=[1, 2, 3, 4, [0, 1, 2, 5], 10]
b					#b=[1, 2, 3, 4, [0, 1, 2], 10]
#修改a本身
a.append(5)			#a=[1, 2, 3, 4, [0, 1, 2, 5], 10, 5]
b					#b=[1, 2, 3, 4, [0, 1, 2], 10]	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值