当我尝试使用+ =运算符修改字符串,并使用id()方法检查对象的标识时,字符串似乎是可变的。有人面对这种奇怪的python行为吗?
a = '123'
print id(a)
# 89806008
a += '1'
print id(a)
# 89245728
a += '1'
print id(a)
# 89245728
print a
# '12311'
使用a = a + '1'
不会产生相同的效果,并更改字符串ID。
答案 0 :(得分:7)
如果你对这个字符串是可变的是正确的,那么添加
b = a
在您的第二个a += '1'
不应对您的输出产生任何影响之前。但确实如此。
原因是因为字符串a
在"增量之前有#34;不再在任何地方使用,id可以重复使用。但是,通过将该字符串分配给b
,现在 在某处使用,而a
的新字符串无法重新使用该ID。