在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
是否可以使用相同的值创建a
和b
,但a is b
可以返回False
?
刚刚学习....:D
答案 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
只应用于测试对象身份,绝不能用于测试相等。