1. 浅拷贝 copy.copy
浅拷贝是对于⼀个对象的顶层拷贝 通俗的理解是:拷贝了引⽤,并没有拷贝内容
浅拷贝只复制第一层数据,更深层的引用不管。
|
|
2. 深拷贝 copy.deepcopy
深拷贝是对于⼀个对象所有层次的拷贝(递归)
、
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. 拷贝的其他⽅式
| 1.分⽚表达式可以赋值⼀个序列 |
- = "abc"
- = a[:]
2.字典的copy⽅法可以拷贝⼀个字典
d = dict(name="zhangsan", age=27)
co = d.copy()
3.有些内置函数可以⽣成拷贝(list)
- = list(range(10))
- = list(a)
4.copy模块中的copy函数
import copy
- = (1,2,3)
- = copy.copy(a)