4

当我在 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
4

2 回答 2

3

intern字符串来获得你想要的行为:

>>> b = intern('testing123')
>>> getrefcount(b)
2
>>> a = 'test'
>>> a = intern(a+'ing123')
>>> getrefcount(b)
3
>>> a is b
True
于 2013-05-15T19:12:30.077 回答
-4

不建议这样做。

为此使用字典,它更安全。

试试这个

dict = { 'testing123' : 4 }
a = 'test'
a += 'ing123'
print dict[a]
于 2013-05-15T19:13:00.327 回答