概念
- b = a:赋值引用,a 和 b 都指向同一个对象。 a 变 b 也变。
![](https://img.haomeiwen.com/i15694846/ddff6b244499670f.png)
- b = copy.copy(a) :浅拷贝, a 和 b 是一个独立的对象,但是,对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)。
![](https://img.haomeiwen.com/i15694846/cc24b57549d4ea98.png)
当我们使用下面的操作的时候,会产生浅拷贝的效果:
- 使用切片[:]操作
- 使用工厂函数(如list/dir/set)
- 使用copy模块中的copy()函数
- b = copy.deepcopy(a) :深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
![](https://img.haomeiwen.com/i15694846/1e4595ad9ec0ce4b.png)
例子
import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('c')
运行后各变量值如下:
a=[1, 2, 3, 4, ['a', 'b','c'],5]
b=[1, 2, 3, 4, ['a', 'b','c'],5]
c=[1, 2, 3, 4, ['a', 'b','c']]
d=[1, 2, 3, 4, ['a', 'b']]
Note:总结自牛客网答案解析
网友评论