pyhton之浅拷贝(copy)和深拷贝(deepcopy)详解,举例说明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyhton之浅拷贝(copy)和深拷贝(deepcopy)详解,举例说明相关的知识,希望对你有一定的参考价值。
a = [1, 2, [‘a‘, ‘b‘]]
a1 = a
b = copy.copy(a)
c = copy.deepcopy(a)
a.append(3)
a[2].append(‘c‘)
print(a)
print(a1)
print(b)
print(c)
结果:
a ----- [1, 2, [‘a‘, ‘b‘, ‘c‘], 3]
a1 ----- [1, 2, [‘a‘, ‘b‘, ‘c‘], 3]
b ----- [1, 2, [‘a‘, ‘b‘, ‘c‘]]
c ----- s[1, 2, [‘a‘, ‘b‘]]
print(id(a))
print(id(a1))
print(id(b))
print(id(c))
id(a) ---- 50472355
id(a1) ---- 5042355
id(b) ---- 8295968
id(c) ---- 50527608
结论:
1.copy()只是拷贝父对象的值,这里也就是指1,2 但是子对象([‘a‘,‘b‘])指向同一个内存地址
2.deepcopy()是将父子对象的值全部复制一份,与原对象无任何关系
下面是子对象的内存地址
print(id(a[2]))
print(id(a1[2]))
print(id(b[2]))
print(id(c[2]))
id(a[2]) --- 8332992
id(a1[2]) --- 8332992
id(b[2]) --- 8332992
id(c[2]) --- 50770128
以上是关于pyhton之浅拷贝(copy)和深拷贝(deepcopy)详解,举例说明的主要内容,如果未能解决你的问题,请参考以下文章