【发布时间】:2015-05-28 23:38:43
【问题描述】:
Python 进行了出色的优化,但我有一个案例想解决它。似乎对于小数字和字符串,python 会自动将多个对象合并为一个。例如:
>>> a = 1
>>> b = 1
>>> id(a) == id(b)
True
>>> a = str(a)
>>> b = str(b)
>>> id(a) == id(b)
True
>>> a += 'foobar'
>>> b += 'foobar'
>>> id(a) == id(b)
False
>>> a = a[:-6]
>>> b = b[:-6]
>>> id(a) == id(b)
True
我有一个案例,我根据它们的 Python id 比较对象。除了我遇到少量的少数情况外,这非常有效。有谁知道如何关闭特定字符串和整数的优化?类似于 anti-intern() 的东西?
【问题讨论】:
-
文字值是在 CPython 中实现的,因此它们具有相同的 id 值。