python深拷贝与浅拷贝

2017-06-10  本文已影响0人  壁花烧年

is 是比较两个引用是否指向了同一个对象(引用比较)。
== 是比较两个对象指向的空间里的内容是否相等。

a = [1,2,3]
b = [1,2,3]
print(a is b)
print(a == b)

结果如下:


is==结果.jpg

浅拷贝是对于一个对象的顶层拷贝
通俗的理解是:拷贝了引用,并没有拷贝内容

a = [1,2,3]
print(id(a))
b = a
print(id(b))
a.append(4)
print(a)
print(b)

结果如下:

浅拷贝结果.jpg

深拷贝是对于一个对象所有层次的拷贝(递归)

import copy
a = [1,2,3]
print(id(a))
b = copy.deepcopy(a)
print(id(b))
print(b)
a.append(666)
print(a)
print(b)

结果如下:

深拷贝结果.jpg
import copy
l1 = [1,2,3,4]
print(id(l1))
l2 = copy.copy(l1)
print(id(l2))
l1.append(666)
print(l2)
a = (11,22,33)
print(id(a))
b = copy.copy(a)
print(id(b))

结果如下:

copy.copy结果.jpg

从上个例子可以看出copy模块中的copy对于不同的类型,拷贝出的类型也有不同。

上一篇下一篇

猜你喜欢

热点阅读