3 ms·
You may not realize that the removal of the inconsistency would be so that a = integer, b = same integer a is b is always false. The inconsistency is tha
by kbutler 9y ago
You may not realize that the removal of the inconsistency would be so that
a = integer, b = same integer
a is b
is always false.
The inconsistency is that the two separate variables reference the same object just because the values are the same.
In general, you shouldn't care about identity (is), just about value comparison (==).
- amelius 9y agoLet's see. The first mistake is of course that the object identity operator is called "is", and should have been called something like "is-same-object-as". Then, a is-same-object-as b, for integers could raise an error, as a and b are not objects. If that's not desired (for some reason), then a is-same-object-as b could indeed return false in all cases, and that would at least be more consistent than returning true for integers smaller than some number and false otherwise.
- kbutler 9y ago> is-same-object-as I don't expect that's a language I'd enjoy. You may prefer Objective-C over Python. > a is-same-object-as b, for integers could raise an error, as a and b are not objects. That would be a greater inconsistency than the minor additional optimization for small integers. It's a Java performance optimization that has crept into the way you think about the data, impacting much more of your program than just "is-a-long-name". >>> isinstance(1, object) True