深浅拷贝(暂时)

深浅拷贝

0. 可变数据类型 '='

共用一个地址,同生共死

1 浅拷贝 (copy.copy/切片操作)

1.1 对于可变数据类型(列表 字典)

只自己创建了最外层结构 内层数据依旧是相同地址,相同可变数据类型依然同生共死

import copy
l = [1,2,[1,2]]
l1 = l[:]
l2 = copy.copy(l)
print (id(l),id(l1),id(l2))
## 4349257224 4349277768 4349276744 各不相同
print (id(l[-1]),id(l1[-1]),id(l2[-1]))
## 4357515912 4357515912 4357515912  第二层地址相同



1.2 对于不可变数据类型 (数字,字符串,tuple)

tuple夹杂可变数据类型,地址相同,一变多变

深拷贝 (copy.deepcopy())

深拷贝理论上来说怎么变也影响不了copyer的数据类型,不过为了节省内存空间,对于不可变数据类型,还是指向相同地址的,但是依旧可以看成没有影响,因为即使可变数据类型相同地址,改变其一也相当于指向新的地址,对之前的数据没有影响

由浅到深 最外层 内层
'=' 地址相同 地址相同
浅拷贝 地址不同 地址相同
深拷贝 地址不同 地址不同

地址相同的可变数据类型:一变多变

另附图解

题解

原文地址:https://www.cnblogs.com/albert0823/p/10971091.html