【发布时间】:2013-05-16 03:14:17
【问题描述】:
当我在 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
【问题讨论】:
-
为什么解释器会浪费时间尝试检测 computed 字符串已经存在?
-
@CristianCiupitu 我不知道。这就是我问的原因。如果您能详细说明您的评论,我将不胜感激。
-
@Dave 感谢您的链接。那里的最佳答案似乎将其归结为“何时缓存和重用字符串的细节取决于实现,可以从 Python 版本更改为 Python 版本并且不能依赖”所以似乎并不总是引用现有对象.
-
@nater:没什么好详细说明的,我只是想强调一个不会发生的可能原因。
标签: python