在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用。
一般对于Python中的拷贝有三种解决方案:浅拷贝、深拷贝和其他拷贝。
浅拷贝:浅拷⻉是对于⼀个对象的顶层拷⻉。通俗的理解是:拷⻉了引⽤,并没有拷⻉内容。
深拷贝:深拷⻉是对于⼀个对象所有层次的拷⻉(递归)。
进一步理解深拷贝:
其他拷贝:浅拷⻉对不可变类型和可变类型的copy不同。
分⽚表达式可以赋值⼀个序列:
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)