KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Why does the following behave unexpectedly in Python? >>> a = 256 >>> b = 256 >>> a is b # This produces an expected result True >>> a = 257 >>> b = 257 >>> a is b # Why is this False? What is happening here? False >>> 257 is 257 # Yet the literal numbers compare properly True I am using Python 2.5.2. Trying some different versions of Python, it appears that Python 2.3.3 shows the above behaviour between 99 and 100. Based on the above, I can hypothesize that Python is internally implemented such that "small" integers are stored in a different way than larger integers and the is operator can tell the difference. Why the leaky abstraction? What is a better way of comparing two arbitrary objects to see whether they are the same when I don't know in advance whether they are numbers or not?
Tags (comma-separated)
Save Edits
Cancel