对象的赋值就是简单的引用,a = [1,2,3], b=a, 在上述情况下,a和b是一样的,他们指向同一片内存,b不过是a的别名,是引用,我们可以使用b is a 去判断,返回True,表名他们地址相同内容也相同,也可以使用id()函数来查看.看两个列表地址是否相同.
深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。在Python中,我们使用函数deepcopy()执行深拷贝
拷贝不可变对象(深拷贝):产生新的对象,开辟新的内存空间,改变互不影响。
而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。我们使用函数function()执行浅拷贝
切片操作是浅拷贝
工厂函数是浅拷贝:lst1 = list(lst)
copy函数:lst1 = copy.copy(lst)
注意!!!!!!!!!!!!
拷贝不可变数据类型时,只是增加一个指向原对象的引用,改变会互相影响。
代码理解:
import copy
b=copy.copy(a) # 浅拷贝
b=copy.deepcopy(a) # 深拷贝