灵虚御风
醉饮千觞不知愁,忘川来生空余恨!

导航

 

 

二、深浅拷贝注意点:可变元素的拷贝
深浅拷贝看上去都会生成一个相同的值,但是拷贝出来的地址不同。

浅拷贝时,拷贝出来的新对象的地址与原对象不同,但是新对象里面的可变元素的地址和原对象里的可变元素的地址时相同的。

深拷贝时,直接开辟新的地址存放新对象,无论如何修改新对象,都不会对原对象造成影响


import copy

l = [1,2,[1,2]]

l1 = l

l2 = copy.copy(l) # 拷贝一份 ....... 浅拷贝

print(id(l),id(l1),id(l2)) # 2922209747400 2922209747400 2922209749768

l[0] = 111
print(l,l1,l2) # [111, 2, [1, 2]] [111, 2, [1, 2]] [1, 2, [1, 2]]
# 拷贝值不会随原值改变而改变

l[2].append(666)
print(l,l1,l2) # [111, 2, [1, 2, 666]] [111, 2, [1, 2, 666]] [1, 2, [1, 2, 666]]

l3 = copy.deepcopy(l)
l[2].append(999)
print(l,l3) # [111, 2, [1, 2, 666, 999]] [111, 2, [1, 2, 666]]
posted on 2022-03-24 18:17  没有如果,只看将来  阅读(88)  评论(0编辑  收藏  举报