深拷贝、浅拷贝

使用内置函数:copy(浅拷贝)、deepcopy(深拷贝)。

拷贝:新开辟一段空间用来存储新的对象。而深浅拷贝的区别在于:
  浅拷贝: 不拷贝子对象的内容,只是拷贝子对象的引用。
  深拷贝: 会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象。

import copy
a = [1,2,3,4]
b = ['a','b',a]
c = b[:]  #相当于    c = copy.copy(b)
d = copy.deepcopy(b)
print(b,'\t',c,'\t',d)
b.append('c')
b[2].append("abc")
print(b,'\t',c,'\t',d)
print("c是不是b的浅拷贝:",b[2] is c[2])
print("c是不是b的深拷贝:",b[2] is d[2])
print(id(b[2]),'\t',id(c[2]),'\t',id(d[2]))

结果演示:

['a', 'b', [1, 2, 3, 4]] 	 ['a', 'b', [1, 2, 3, 4]] 	 ['a', 'b', [1, 2, 3, 4]]
['a', 'b', [1, 2, 3, 4, 'abc'], 'c'] 	 ['a', 'b', [1, 2, 3, 4, 'abc']] 	 ['a', 'b', [1, 2, 3, 4]]
c是不是b的浅拷贝: True
c是不是b的深拷贝: False
1877574659976 	 1877574659976 	 1877604567560
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值