对象的内容不可以被改变,要改变的话,会重新生成一个新的地址来存放修改的值。
例:
i = 73
i += 2
从上图可知,不可变对象的特征没有变,变的只是创建了新对象,改变了变量的对象引用。
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)))
对象的内容(value)可以被改变,但是还是指向原来的内存地址。
例:
m=[5,9]
m+=[6]
一个对象在不改变其所指向的地址的前提下,可以修改其所指向的地址中的值;
#列表
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
#对象的值发生了改变,但内存地址没变(结合上面的图看,箭头还是引用原来的位置),则列表为可变对象
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!