v1 = [1,2,3] v2 = [1,2,3] ########### 不是同一个内存地址,各自改变,与对方无关 v1 = [1,2,3] v1 = [1,2,3,4] ########### 不是同一个内存地址,第一个v1被闲置,等待被回收 v1 = [1,2,3] v2 = v1 ########### 是同一个内存地址, v2 指向 v1 的地址, v1 改变, v2 也会改变
### 练习题 v1 = [1,2,3] v2 = v1 v1 = 666 print(v2) #### ---- [1,2,3] ---- ## v1重新赋值与原来的v1不是同一个地址,v2 指向的是原来的v1,与重新赋值的 v1 无关 v1 = [1,2,3] v2 = v1 v1.append(666) print(v2) ### ---- [1,2,3,666] ---- ## 第二个v1是找到与原来的v1,并对其进行修改,v2 指向的是原来的v1,原来的v1改变,v2 随之改变 v1 = [1,2,3] v2 = [44,55,v1] v1.append(666) print(v2) #### [44, 55, [1, 2, 3, 666]] v1 = [1,2,3] v2 = [44,55,v1] v2[2].append(888) print(v1) ## [1, 2, 3, 666, 888]
补充
-
在 python 中,在范围 -5~256 的整型和简单的字符型不重新开辟地址
-
按道理应该重新开辟地址,但因为python有缓存机制