深浅拷贝
浅拷贝,对象如果包含有可变类型元素,那么可变类型元素只是拷贝了内存地址的引用,并非两个独立内存
如:a=[1, 2, 3, [1, 2]],里面的元素[1, 2]只是拷贝了内存地址的引用,改变[1,2]里面的内容,a的内存地址不会发生改变
深拷贝,拷贝之间的内存地址相互独立,修改里面的可变类型数据不会影响其它对象
b=a 和 b=a.copy()是完全不相同的两种东西
深拷贝
import copy
copy.deepcopy()
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 浅拷贝,只是拷贝了内存地址的引用,并非两个独立内存 深拷贝,拷贝之间的内存地址相互独立,修改里面的可变类型数据不会影响其它对象 import copy deepcopy() """ # c1 = [1, 2, 3, 4] # c2 = c1.copy() # [1, 2, 3, 4] # print(c2) # c1[3] = 5 # [1, 2, 3, 5] # print(c1) # # 浅拷贝,修改可变类型数据时,会影响拷贝对象 # c1 = [1, 2, 3, [4, 5]] # c2 = c1.copy() # [1, 2, 3, [4, 5]] # print(c2) # c1[3][0] = 5 # print(c1) # [1, 2, 3, [5, 5]] # print(c2) # [1, 2, 3, [5, 5]] # id1 = id(c1[3]) # id2 = id(c2[3]) # print(id1, id2) # 10622792 10622792 #import copy #c1 = [1, 2, 3, [4, 5]] #c2 = copy.deepcopy(c1) # [1, 2, 3, [4, 5]] #id1 = id(c1[3]) #id2 = id(c2[3]) #print(id1, id2) # 18650248 18650312