深拷贝、浅拷贝
1. 浅拷贝
- 浅拷贝是对于一个对象的顶层拷贝
通俗的理解是:拷贝了引用,并没有拷贝内容
2. 深拷贝
- 深拷贝是对于一个对象所有层次的拷贝(递归)
-
进一步理解拷贝
3. 注意点
浅拷贝对不可变类型和可变类型的copy不同
In [88]: a = [11,22,33] In [89]: b = copy.copy(a) In [90]: id(a) Out[90]: 59275144 In [91]: id(b) Out[91]: 59525600 In [92]: a.append(44) In [93]: a Out[93]: [11, 22, 33, 44] In [94]: b Out[94]: [11, 22, 33] In [95]: In [95]: In [95]: a = (11,22,33) In [96]: b = copy.copy(a) In [97]: id(a) Out[97]: 58890680 In [98]: id(b) Out[98]: 58890680
4. 拷贝的其他方式
- 分片表达式可以赋值一个序列
a = "abc" b = a[:]
- 字典的copy方法可以拷贝一个字典
d = dict(name="zhangsan", age=27) co = d.copy()
- 有些内置函数可以生成拷贝(list)
a = list(range(10)) b = list(a)
- copy模块中的copy函数
import copy a = (1,2,3) b = copy.copy(a)