在Python中对象的赋值其实就是对象的引用(指向同一片地址空间)。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。
浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用(id/地址空间)而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制。
深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。
在这里插入图片描述
深拷贝:e = copy.deepcopy( c ),逐层拷贝到最里面一层。
a = [11,22,33]
b = [44,55,66]
c = [a,b]
d = c
e = copy.deepcopy( c )
浅拷贝:赋值和copy.copy()
copy.copy()又分两种情况,一种是可变数据类型类型的拷贝,另一种是不可变数据类型的拷贝。
可变数据类型的拷贝,会往里面拷贝一层。
不可变数据类型的拷贝,一层都不变,相当于赋值这种浅拷贝。