python如何为内置的不可变类型的实例维护唯一身份?

时间:2018-10-17 12:16:45

标签: python immutability identity

Immutable并不表示唯一标识,例如标准数字类型FractionDecimal

>>> from fractions import Fraction
>>> Fraction(1, 3) is Fraction(1, 3)
>>> False

但是,对于tuplestrint之类的所有内置不可变类型,它们的实例具有唯一标识。

>>> 1 is 1
>>> True
>>> (2-1, 0) is (int('1'), 0)
>>> True    

要强制执行此操作,在我看来python使用一些字典来跟踪所有这些对象的创建,因此我们不能创建两个具有相同值的对象。这个假设是真的吗?有人可以解释一下背后的机制吗?

0 个答案:

没有答案