page contents

一分钟看懂不可变与可变对象——图解

还在为解读可变、不可变发愁?概念图像化给你答案,两张图刷新你的认知!


1 .不可变对象

对象的内容不可以被改变,要改变的话,会重新生成一个新的地址来存放修改的值。

例:

 i = 73  
 i += 2

attachments-2021-06-5d1Yw9dS60cc54a7764e3.png

从上图可知,不可变对象的特征没有变,变的只是创建了新对象,改变了变量的对象引用。

 i = 73
 print(f'i = 73 的地址是{id(i)}')  # i = 73 的地址是140720391423296
 i = 75
 print(f'i = 75 的地址是{id(i)}')  # i = 75 的地址是140720391423360
 # print('i = 75 的地址是 % d' % id(i)) 格式化输出的三种形式
 # print('i = 75 的地址是{}'.format(id(i)))

4.2 可变对象

对象的内容(value)可以被改变,但是还是指向原来的内存地址。

例:

 m=[5,9]  
 m+=[6]

attachments-2021-06-Ds35GsMG60cc54bfa9de2.png

一个对象在不改变其所指向的地址的前提下,可以修改其所指向的地址中的值;

 #列表
 list = [1,'q','qwer',True]
 print(list,type(list),id(list))
 结果:
 [1, 'q', 'qwer', True] <class 'list'> 2428784235016
 
 list.append('djx')
 print(list,type(list),id(list))
 结果:
 [1, 'q', 'qwer', True, 'djx'] <class 'list'> 2428784235016
 #对象的值发生了改变,但内存地址没变(结合上面的图看,箭头还是引用原来的位置),则列表为可变对象

  • 发表于 2021-06-18 16:12
  • 阅读 ( 738 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Wilia
Wilia

5 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章