浅拷贝 与 深拷贝


1年前 672次点击 来自 其他

标签: 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]

Made with in Shangrao,China By Devler.

Copyright © Devler 2012 - 2022

赣ICP备19009883号-1