001 说说Python中的深拷贝和浅拷贝
# :假设cuboid中保存了两个长方体的长、宽、高。 >>> cuboid= [[1, 2, 3], [2, 3, 4]] # :有多种方式生成cuboid的副本,这里使用list()方法。 >>> cuboid_tmp = list(cuboid) >>> cuboid_tmp [[1, 2, 3], [2, 3, 4]] # :修改原始对象数据。 >>> cuboid[0][1] = 10 >>> cuboid [[1, 10, 3], [2, 3, 4]] # :查看副本对象中数据并与原始对象数据对比。 >>> cuboid_tmp [[1, 10, 3], [2, 3, 4]]
>>> id(cuboid) 2827786472008 >>> id(cuboid_tmp) 2827786472200 # 不一样
浅拷贝
# :假设cuboid中保存了一个长方体的长、宽、高。 >>> cuboid= [1, 2, 3] # :我们还是使用list()浅拷贝生成一个副本。 >>> cuboid_tmp = list(cuboid) # :修改原始对象数据。 >>> cuboid[1] = 10 >>> cuboid [1, 10, 3] # :查看副本对象中数据并与原始对象数据对比。 >>> cuboid_tmp [1, 2, 3]
>>> id(cuboid) 2827786471176 >>> id(cuboid_tmp) 2827786484936 # 不一样
>>> for i in cuboid: ... print(id(i)) 140733841519440 140733841519728 140733841519504 >>> >>> for i in cuboid_tmp: ... print(id(i)) 140733841519440 # 一样 140733841519472 # 不一样 140733841519504 # 一样
>>> cuboid = [1,2,3] >>> cuboid_tmp = cuboid >>> id(cuboid) 1919680744520 >>> id(cuboid_tmp) 1919680744520 # 一样
>>> cuboid[1] = 10 >>> cuboid [1, 10, 3] >>> cuboid_tmp [1, 10, 3]