Python 字符串应该像整数一样是不可变的。考虑一下:
>>> num1 = 34
>>> num2 = 36
>>> id(num1)
505894832
>>> num4 = 34
>>> id(num4)
505894832
num4 与 num1 具有完全相同的 ID,这意味着它们指向同一事物。字符串不应该发生同样的事情吗?我感到困惑:
>>> name = "Sumeet"
>>> id(name)
35692000
>>> name = "Ali"
>>> id(name)
35926912
>>> naam = "Sumeet"
>>> id(naam)
35926848
最后的输出不应该是:35692000吗?
请您参考如下方法:
几个变量具有相同 id 的事实与实际对象是不可变的没有太大关系。
事实上,由于它们的不变性,这可以安全地发生(节省内存)。
假设 python 中的字符串不是不可变的,您声明:
a = 'abc'
b = 'abc'
如果您更改了 a,那将意味着 b 将引用一个完全不同的对象(复制表示相同文字字符串所需的内存),或者,当更改 a 时,必须复制整个对象才能进行更改(这样 b 就不会受到影响)。
由于字符串是不可变的,所以两个变量可以安全地指向同一个对象。对不可变数据结构的任何更改都会创建一个新结构,并且指向它的引用将更改为新的,而对“旧”结构的所有其他引用则保持不变。不可变数据结构中没有副作用大大降低了由于代码中其他地方更改共享结构/对象而发生错误的可能性。
