python3浅拷贝与深拷贝的区别和理解
浅拷贝,只对顶层拷贝
深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了
参考这里:
https://www.jianshu.com/p/03dce38cc97e
# 深拷贝的会对子元素也进行拷贝
import copy
l1 = [11, 12]
l2 = [21, 22]
num = 555
allOne = [l1, l2,num]
# 浅拷贝,除了顶层拷贝,还对子元素也进行了拷贝(本质上递归浅拷贝)
# 经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了
print("id allOne:"+str(id(allOne)))
print("拷贝前id allOne[0]:"+str(id(allOne[0])))
print("拷贝前 id allOne[1]:"+str(id(allOne[1])))
print("拷贝前id allOne[2]:"+str(id(allOne[2])))
# allOne2 = copy.deepcopy(allOne) # copy.deepcopy 深拷贝
allOne2 = copy.copy(allOne) # copy.deepcopy 浅拷贝
print("------------------------------")
# allOne[1] = [113,114]
# allOne2[2] = [227,228]
print(allOne)
print(allOne2)
print("id allOne2:"+str(id(allOne2)))
print("拷贝后id allOne2[0]:"+str(id(allOne2[0])))
print("拷贝后id allOne2[1]:"+str(id(allOne2[1])))
print("拷贝后id allOne2[2]:"+str(id(allOne2[2])))
浅拷贝
深拷贝: