Python + =运算符是否使字符串可变?

时间:2018-01-09 16:57:57

标签: python string python-2.7 mutability

当我尝试使用+ =运算符修改字符串,并使用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。

1 个答案:

答案 0 :(得分:7)

如果你对这个字符串是可变的是正确的,那么添加

b = a
在您的第二个a += '1'不应对您的输出产生任何影响之前

。但确实如此。

原因是因为字符串a在"增量之前有#34;不再在任何地方使用,id可以重复使用。但是,通过将该字符串分配给b,现在 在某处使用,而a的新字符串无法重新使用该ID。