Last active
October 26, 2022 11:50
-
-
Save DRMacIver/47519854a0e62538b542 to your computer and use it in GitHub Desktop.
Similar things are not always similar.
Python 3.4.3 (default, Nov 12 2015, 20:43:56)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a, b = b'foo', b'foo'
>>> a is b
True
>>> a, b = 'foo', 'foo'
>>> a is b
True
>>> a = 'foo'
>>> b = 'foo'
>>> a is b
True
>>> a = b'foo'
>>> b = b'foo'
>>> a is b
False
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Oh yes, that one! It gets better though:
The reason is that the constants used here are stored in the function object, where they're deduplicated:
So inside the function both the literals are looked up as the same constant.
There is basically zero behaviour you can count on for when two numbers are going to be reference equal in Python.