bbr*_*all 2 python string mutability python-2.7
当我尝试使用+ =运算符修改字符串,并使用id()方法来检查对象的标识时,字符串似乎是可变的.有人面对这种奇怪的python行为吗?
a = '123'
print id(a)
# 89806008
a += '1'
print id(a)
# 89245728
a += '1'
print id(a)
# 89245728
print a
# '12311'
Run Code Online (Sandbox Code Playgroud)
使用 a = a + '1'doesnt具有相同的效果,并更改字符串ID.
如果你对这个字符串是可变的是正确的,那么添加
b = a
Run Code Online (Sandbox Code Playgroud)
在你的第二个之前a += '1'不应该对你的输出产生任何影响.但确实如此.
原因是因为字符串a在"增量"之前不再使用,所以可以重新使用id.但是通过将该字符串分配给它b,它现在在某处使用,并且新字符串a不能重用该id.