Create two immutable objects with the same value in Python

这一生的挚爱 提交于 2019-12-22 11:29:58

问题


Is it possible in Python to create two immutable objects with the same value?

So that you understand what I mean, here are some examples:

>>> 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

Is it possible to create a and b with the same value but a is b to return False? Just learning.... :D


回答1:


Sure, just choose a value that is too large to be cached:

>>> 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

Only small integers and short strings will be cached (and this is implementation-dependent, so you shouldn't rely on that anyway). is should only be used for testing object identity, never for testing equality.



来源:https://stackoverflow.com/questions/8158837/create-two-immutable-objects-with-the-same-value-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!