Python += 运算符是否使字符串可变?
Does Python += operator make string mutable?
当我尝试使用 += 运算符修改字符串,并使用 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。
如果您关于此字符串可变的判断正确,则添加
b = a
在你的第二个 a += '1'
之前应该不会对你的输出有任何影响。但确实如此。
原因是因为在"increment"之前的字符串a
已经没有地方再用了,id可以重新使用。但是通过将该字符串分配给 b
,它现在 是 在某处使用,并且 a
的新字符串无法重新使用该 ID。
当我尝试使用 += 运算符修改字符串,并使用 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。
如果您关于此字符串可变的判断正确,则添加
b = a
在你的第二个 a += '1'
之前应该不会对你的输出有任何影响。但确实如此。
原因是因为在"increment"之前的字符串a
已经没有地方再用了,id可以重新使用。但是通过将该字符串分配给 b
,它现在 是 在某处使用,并且 a
的新字符串无法重新使用该 ID。