在Python中创建两个具有相同值的不可变对象

时间:2011-11-16 21:17:23

标签: python immutability

在Python中是否可以创建具有相同值的两个不可变对象?

所以你理解我的意思,这里有一些例子:

>>> a = 13
>>> b = 13
>>> a is b
True


>>> a = 13
>>> b = 26/2
>>> a is b
True


>>> a = 13
>>> b = int.__new__(int, 13)
>>> a is b
True


>>> a = 13
>>> b = int("13")
>>> a is b
True

是否可以使用相同的值创建ab,但a is b可以返回False? 刚刚学习....:D

1 个答案:

答案 0 :(得分:5)

当然,只需选择一个太大而无法缓存的值:

>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False
>>> a = "hey"
>>> b = "hey"
>>> a is b
True
>>> a = "hey!"
>>> b = "hey!"
>>> a is b
False

只缓存小整数和短字符串(这取决于实现,所以你不应该依赖它)。 is只应用于测试对象身份,绝不能用于测试相等