python的浅拷贝和深拷贝

#1.直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
# alist = [1,2,3,["a","b"]]
# b = alist
# print(b)
# alist.append(5)
# print(b) 	#alist和b指向同一个列表


#2.copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变
# import copy
# alist = [1,2,3,["a","b"]]
# c = copy.copy(alist)
# print(c)
# alist.append(5)
# print(c)
# alist[3].append(5)
# print(c)	#子对象被改变了


#深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
# import copy
# alist = [1,2,3,["a","b"]]
# d = copy.deepcopy(alist)
# print(alist)
# alist.append(5)
# alist[3].append("cccc")
# print(d)
# print(alist)




#不可变元组和可变列表的深拷贝与浅拷贝的区别
import copy
a = (1,2)
b = copy.copy(a)
c = copy.deepcopy(a)
print(b==c) #True
print(id(b) == id(c))#True



a = [3,4]
cc = copy.copy(a)
dd = copy.deepcopy(a)
print(cc == dd)#True
print(id(cc) == id(dd))#False
posted @ 2020-05-31 09:19  Akmf's_blog  阅读(68)  评论(0)    收藏  举报