浅拷贝:
浅拷贝是对一个对象的顶层拷贝。通俗的理解,拷贝了引用,并没有拷贝内容
a = [1,2,3,4]
b = a
print(id(b)) #61201864
print(id(a)) #61201864
a.append(5)
print(a) # [1, 2, 3, 4, 5]
print(b) # [1, 2, 3, 4, 5]
个人理解:浅拷贝是指向了同一个地址,a的列表改变 b的列表也跟着改变
深拷贝:
深拷贝将其内容拷贝,指向新的地址
a = [1,2,3,4,5]
import copy
c = copy.deepcopy(a)
a.append(6)
print(id(a)) #61201864
print(id(c)) #43768840
print(a) #[1, 2, 3, 4, 5, 6]
print(c) #[1, 2, 3, 4, 5]
个人理解:深拷贝是将其内容拷贝到一个新的地址。a地址里的内容添加东西,c里面不添加。(a和c指向的地址不同)
对于不可变类型,不管是深拷贝还是浅拷贝,地址值和拷贝后的值都是一样的(copy会根据当前拷贝的数据类型是可变还是不可变类型有不同的处理方式)