Starting Python 3.8, the interpreter warns about is comparison | Python etc
Starting Python 3.8, the interpreter warns about is comparison of literals.
Python 3.7:
>>> 0 is 0 True
Python 3.8:
>>> 0 is 0 :1: SyntaxWarning: "is" with a literal. Did you mean "=="? True
The reason is that it is an infamous Python gotcha. While == does values comparison (which is implemented by calling __eq__ magic method, in a nutshell), is compares memory addresses of objects. It's true for ints from -5 to 256 but it won't work for ints out of this range or for objects of other types:
a = -5 a is -5 # True a = -6 a is -6 # False a = 256 a is 256 # True a = 257 a is 257 # False