In Python,
-
The
is
operator tests for identity (False is False
,0 is not False
). -
The
==
operator which tests for logical equality (and thus0 == False
).
Technically neither of these is exactly equivalent to PHP’s ===
, which compares logical equality and type – in Python, that’d be a == b and type(a) is type(b)
.
Some other differences between is
and ==
:
Mutable type literals
{} == {}
, but{} is not {}
(and the same holds true for lists and other mutable types)- However, if
a = {}
, thena is a
(because in this case it’s a reference to the same instance)
Strings
"a"*255 is not "a"*255"
, but"a"*20 is "a"*20
in most implementations, due to how Python handles string interning. This behavior isn’t guaranteed, though, and you probably shouldn’t be usingis
in this case."a"*255 == "a"*255
and is almost always the right comparison to use.
Numbers
12345 is 12345
but12345 is not 12345 + 1 - 1
in most implementations, similarly. You pretty much always want to use equality for these cases.