Python中的浅拷贝、深拷贝和其他拷贝

在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用。

一般对于Python中的拷贝有三种解决方案:浅拷贝、深拷贝和其他拷贝。

浅拷贝:浅拷⻉是对于⼀个对象的顶层拷⻉。通俗的理解是:拷⻉了引⽤,并没有拷⻉内容。

img

深拷贝:深拷⻉是对于⼀个对象所有层次的拷⻉(递归)。

img

进一步理解深拷贝:

img

img

其他拷贝:浅拷⻉对不可变类型和可变类型的copy不同。

img

分⽚表达式可以赋值⼀个序列:

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)

推荐文章