3 ms·
Though "when" the object is created isn't always so straightforward: >>> x = 257 >>> y = 257 >>> x is y False >>> def f(): ... x = 257 ...
by kgm 6y ago
Though "when" the object is created isn't always so straightforward:
>>> x = 257
>>> y = 257
>>> x is y
False
>>> def f():
... x = 257
... y = 257
... return x is y
...
>>> f()
True
The lesson being that `is` is essentially meaningless for immutable objects, and to always use `==`.
- pansa2 6y ago> `is` is essentially meaningless for immutable objects OTOH it’s recommended to use `is` rather than `==` when comparing to “singletons like `None`”. https://www.python.org/dev/peps/pep-0008/#programming-recommendations https://www.python.org/dev/peps/pep-0008/#programming-recomm...
- joppy 6y agoWhat is the rationale behind this? '==' works all the time, and 'is' only works sometimes. Using 'is' wherever possible requires the user to know some rather arbitrary language details (which objects are singletons and which are not), wheras '==' will always give the correct answer regardless.
- pansa2 6y agoClasses can overload `==`: class C: def __eq__(self, other): return True print(C() == None) # True print(C() is None) # False