当我在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
答案 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]