python的深浅拷贝
2021-02-11 18:20
标签:浅拷贝 text ann 一个 第一个 数据 不可变类 相同 会同 浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,不会响拷贝对象。 地址是完全一致的。 a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。 很显然:从数据的不可变而言,浅拷贝是面向不可变类型的;而深拷贝是面向可变类型的处理 注意:这两者与赋值引用不同,在赋值引用中无可变与不可变的类型之分。一旦一个数据改变同类型的也会改变。 python的深浅拷贝 标签:浅拷贝 text ann 一个 第一个 数据 不可变类 相同 会同 原文地址:https://www.cnblogs.com/topass123/p/12735192.html#定义一个列表,第一个元素是可变类型
>>> A = [[2],‘fei‘,90]
#浅拷贝
>>> B = copy.copy(A)
#对象地址是否相同
>>> A is B
False
#改变第一个可变类型的值,查看复制对象变化
>>> A[0]= 2
>>> A
[[2], ‘fei‘, 90]
#复制对象也跟着改变了
>>> B
[[2], ‘fei‘, 90]
#改变第二个不可变类型的值,查看复制对象变化
>>> A[1] = ‘anne‘
>>> A
[[2], ‘anne‘, 90]
#复制对象没有改变
>>> B
[[2], ‘fei‘, 90]
深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。
经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。#深拷贝
>>> C = copy.deepcopy(A)
#改变第一个元素,查看复制元素变化
>>> A[0]= 3
>>> A
[[3], ‘fei‘, 90]
#复制元素不变,对复制元素没影响
>>> C
[[1], ‘fei‘, 90]#改变第二个元素,查看复制元素变化
>>> A[1] = ‘Anne‘
>>> A
[[3], ‘Anne‘, 90]
>>> C
[[2], ‘fei‘, 90]