赋值:会随着原对象的改变而改变
li1 = [1,2,3,4,5]
li2 = li1
print(li1)
print(li2)
li1.append(6)
print(li1,id(li1))
print(li2,id(li2))
#赋值:等于完全共享资源,当其中一个值发生改变时会完全被另一个值共享
1.浅拷贝(数据半共享)
拷贝最外层的对象,内部元素只拷贝了一个引用。在浅拷贝时,会创建一个新的对象,只拷贝第一层的数据,嵌套层会指向原来的内存地址
import copy
li1 = [1,2,[3,4,5]]
li2 = copy.copy(li1)
print(li1)
print(li2)
li1.append(6)
print(li1,id(li1))
print(li2,id(li2))
li1[2].append(7)
print(li1,id(li1[2]))
print(li2,id(li2[2]))
#内存地址不一样,说明不是同一个对象。(注意:外层的内存地址不同,但是内层的内存地址相同)
优点:拷贝速度快,占用空间少,拷贝效率高
2.深拷贝(数据完全不共享)
外层的对象何内部的元素都拷贝一遍
import copy
li1 = [1,2,[3,4,5]]
li2 = copy.deepcopy(li1)
print("li1:",li1,id(li1))
print("li2:",li2,id(li2))
li1[2].append(6)
print("li1:",li1,id(li1[2]))
print("li2:",li2,id(li2[2]))
li1.append(7)
print("li1:",li1,id(li1))
print("li2:",li2,id(li2))
# 深拷贝数据变化只影响自己本身,跟原来的对象没有关联
总结: