a=1;#内存空间划分一个区域存放1的值,a指向这个内存空间;可用id(a)查看a的地址
当a = 2时,此时 内存空间划分一个区域存放2的值,a指向这个内存空间区域
---------------------------深浅copy---------------------------
浅copy:只拷贝第一层(a[n]为第一层,a[n][m]则为第二层,a[n][m][l]则为第三层),第二层以上的数据都是共享,a【】【】与b【】【】都是同时改动
1 a= [[1,2],1,"abc"] 2 b = a.copy() #浅拷贝 只拷贝了第一层,即b[0]存储a[0]指向的地址,指向[1,2],b[1]和b【2】与a[1],a[2]指向相同。 3 print(id(a[1]))#打印a[1]指向的地址 8791048155392 4 print(id(b[1]))#打印b[1]指向的地址,与a【1】相同 8791048155392 5 b[1]=33#b[1]存储指向33的内存地址 8791048156416
深copy:完完全全复制一份,a与b任何改动都是独立的。
1 c= copy.deepcopy(a) #深拷贝, a与c是数据一致,独立出来 2 print("a的元素:",a,"c的元素:",c) 3 print(id(a[0])) 4 print(id(c[0])) 5 print("a[0][1]地址:",id(a[0][1])) 6 print("c[0][1]地址:",id(c[0][1])) 7 c[0][1] = 1111 8 print("a的元素:",a,"c的元素:",c) 9 print("a[0][1]地址:",id(a[0][1])) 10 print("改动后c[0][1]地址:",id(c[0][1]))