拷贝:在内存中复制一个对象,与引用不同
所谓的不可变对象就是不能拷贝的对象,数字,元祖,字符串都是
1 a = [1,2] 2 b = a#b和a内存地址相同,ab都只是列表对象[1,2]的引用,这个赋值操作并没有复制对象 3 c = list[a]#c的内存地址就不同于a了,这是对象的复制 4 d = a[:]#d的内存地址也不同于a,也是对象的复制 5 #而list和切片复制都是浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。 6 7 8 9 e = [1,[2,3]] 10 f = list[e] 11 id(e) 12 id(f)#不同于e的地址 13 id(e[1]) 14 id(f[1])#与上条地址相同,所以,改变f[1],e[1]也会跟着变化,例如f[1][1] = 5,那么e[1][1]也讲变为5
有没有一种方法,可以完全的拷贝对象呢?这叫做深拷贝
1 a =[1,[2,3]] 2 import copy 3 b =copy.deepcopy(a) 4 id(a[1]) 5 id(b[1])#地址不同了跟上面的