浅拷贝 与 深拷贝

1个月前 174次点击 来自 Python

浅拷贝

浅拷贝,拷贝的是父对象,不会拷贝到内部的子对象。

import copy
a=[1,2,[3,4],5]
b=copy.copy(a)
print(b)
# 结果为 [1,2,[3,4],5]
# 接下来我们更改a的数据
a.append(6)
print(a)
print(b)
# 结果为 [1,2,[3,4],5,6]和[1,2,[3,4],5]
# 可以发现浅层的数据更改(第一层)并没有让b发生变化
# 接下来进行子对象数据(深层数据)的更改
a[2].append(7)
print(a)
print(b)
# 结果为 [1,2,[3,4,7],5,6]和[1,2,[3,4,7],5]
# 可以发现b发生了改变

深拷贝

深拷贝,包含对象里面的自对象的拷贝(可以理解为克隆,全拷贝过去但是两者没有任何关系了,各玩各的),所以原始对象的改变不会造成深拷贝里任何子元素的改变。

import copy
a=[1,2,[3,4],5]
b=copy.deepcopy(a)
print(b)
# 结果为 [1,2,[3,4],5]
# 接下来我们更改a的数据
a.append(6)
print(a)
print(b)
# 结果为 [1,2,[3,4],5,6]和[1,2,[3,4],5]
# 可以发现浅层的数据更改(第一层)并没有让b发生变化
# 接下来进行子对象数据(深层数据)的更改
a[2].append(7)
print(a)
print(b)
# 结果为 [1,2,[3,4,7],5,6]和[1,2,[3,4],5]

Card image cap
开发者雷

尘世间一个小小的开发者,每天增加一些无聊的知识

要加油~~~

技术文档 >> 系列应用 >>
热推应用
Let'sLearnSwift
学习Swift的入门教程
PyPie
Python is as good as Pie
标签