python 内存相关

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有缓存机制

 

posted @ 2019-07-10 14:10  韦礼维  阅读(116)  评论(0编辑  收藏  举报