考虑以下示例:
(Python 3.7.2)
>>> a = '1'
>>> id(a)
4364850768
>>> a += '2'
>>> id(a)
4365285672
>>> a += '3'
>>> id(a)
4365285672
我的理解是,将字符添加到字符串a
时,将创建一个新对象,并复制旧对象的内容并添加新字符。当id更改时附加2
时似乎确实是这种情况,但附加3
时似乎不是这种情况。我正在寻找有关ID为什么第二次不更改的说明。
答案 0 :(得分:2)
确实创建了一个新对象,但是看起来Python正在回收id。这是一个实现细节-最好不要依赖id()
。
为证明这一点,请保留另一个“ 12”副本:
>>> id(a)
4377270112
>>> a = '1'
>>> id(a)
4376257360
>>> a += '2'
>>> id(a)
4377270152
>>> b = a
>>> a += '3'
>>> id(a)
4377270032
>>> id(b)
4377270152