前文讲了一点python的对象机制,其实是为了本文服务的。
浅/深拷贝
为变量赋值(其实是为对象建立引用)一般有三种方式:直接赋值,浅拷贝和深拷贝
直接赋值就是常见的"a=b"之类,将a作为b指向的对象的一个新的引用。
下面主要介绍浅拷贝和深拷贝以及两者之间的区别:
浅拷贝
在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的。
但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的.
举个直观的栗子:
import copy
a = [1, 2, 3, 4, 5, ['a', 'b']]
c = copy.copy(a) # 浅拷贝
print(id(a)) # 1967240408904
print(id(c)) # 1967237100936
print(id(a[5])) # 1967237036872
print(id(c[5])) # 1967237036872
c.append(6)
c[5