Skip to content

Latest commit

 

History

History
67 lines (63 loc) · 1.13 KB

learn_deepcopy.md

File metadata and controls

67 lines (63 loc) · 1.13 KB

python 中的深浅拷贝

浅拷贝

变量使用同一个引用

>>> a = [1, 2, 3]
>>> b = a
>>> id(a)
4355819336
>>> id(b)
4355819336

深拷贝

比较浅显的理解就是深拷贝会递归地将数据复制过来存入新的地址

>>> import copy
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = [a ,b]
>>> d = copy.deepcopy(c)
>>> id(c)c = 
4355836424
>>> id(d)
4355818888
>>> a.append('a')
>>> c[0]
[1, 2, 3, 'a']
>>> d[0]
[1, 2, 3]

==copy与deepcopy的区别是,copy只拷贝第一层,再深一层就不会拷贝了。==

>>> import copy
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = [a, b]
>>> d = copy.copy(c)
>>> id(c)
4355819272
>>> id(d)
4355818888
>>> a.append('a')
>>> c[0]
[1, 2, 3, 'a']
>>> d[0]
[1, 2, 3, 'a']

==对于copy.copy()方法,他会根据拷贝的数据类型决定是否使用被拷贝数据的引用==

>>> import copy
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = (a, b)
>>> d = copy.copy(c)
>>> id(c)
4355783752  
>>> id(d)
4355783752  # 元组类型不可以改变,所以直接引用c
>>>
>>> c[0]
[1, 2, 3, 'a']
>>> d[0]
[1, 2, 3, 'a']  # 再次验证一层拷贝