为什么python不重新引用这个现有的对象?

时间:2013-05-15 19:04:21

标签: python

当我在Python中声明一个变量时,它会引用一个对象。在这种情况下,我的对象是字符串'test'。当我将它与'ing123'连接时,变量a现在指向一个字符串对象'testing123'。但是,'testing123'的引用计数不会增加。为什么会这样?我认为python只是重新引用以前存在的'testing123'字符串对象。在这种情况下,它似乎正在创建getrefcount无法识别的另一个对象。我猜我的问题是......为什么会这样?我期待第二次调用getrefcount返回5而不是4。

from sys import getrefcount

b = 'testing123'
print getrefcount('testing123')
a = 'test'
a += 'ing123'
print getrefcount('testing123')
print a

...打印

4
4
testing123

2 个答案:

答案 0 :(得分:3)

intern字符串可以获得您想要的行为:

>>> b = intern('testing123')
>>> getrefcount(b)
2
>>> a = 'test'
>>> a = intern(a+'ing123')
>>> getrefcount(b)
3
>>> a is b
True

答案 1 :(得分:-4)

建议不要这样做。

使用字典,更安全。

试试这个

dict = { 'testing123' : 4 }
a = 'test'
a += 'ing123'
print dict[a]