在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用
1.赋值:
将一个变量赋值给另一个变量,这个过程叫做赋值。赋值会导致多个变量同时指向一块内存,所以此时不管是 == 或者 is 都返回 True
通俗的说直接赋值是,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
2.拷贝:
就是一个变量的值传给另外一个变量。在python 中 id() 方法可以查看存放变量的内存地址。
(1)浅拷贝:
浅拷贝是对于一个对象的顶层拷贝。
通俗的理解是:拷贝了引用,并没有拷贝内容
copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变
(2)深拷贝:
深拷贝是对于一个对象所有层次的拷贝(递归)
深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
(3)拷贝的其他方式:
注意常量类型的深浅拷贝问题(如字符串、数值型、元组)