Discuss / Python / 关于str不可变的问题

关于str不可变的问题

Topic source

a = 'abc'

a = a.replace('a','A')

这时a的值为Abc,老师,这个不可变对象这时不是已经改变了吗?

a和'abc'是两个独立个体

你这样写a确实变了,但是'abc'没变,'Abc'是新建的字符串

所以原本是只有a和'abc',同时a = 'abc'

replace之后不仅有a和'abc',又新建了一个'Abc',并且a = 'Abc','abc'仍然在,只是没有变量指向它了

不变的是'abc',a是个变量并不是不可变对象

独家灯火

#4 Created at ... [Delete] [Delete and Lock User]

id()

>>> a = 'abc'
>>> id(a)
2254526513712
>>> id('abc')
2254526513712
>>> a = a.replace('a', 'A')
>>> id(a)
2254556283568
>>> id('Abc')
2254556283696
>>> id('abc')
2254526513712
>>> 

变量a变化了   字符串abc没有变     变量a只是被Abc覆盖了


  • 1

Reply