Duplicar posible:
Python “is” operator behaves unexpectedly with integers¿Por qué (0-6) es -6 = Falso?
Hoy me trató de depurar mi proyecto y después de unas horas de análisis que había conseguido esto:
>>> (0-6) is -6
False
pero,
>>> (0-5) is -5
True
¿Podría explicarme por qué? Tal vez esto es algún tipo de error o comportamiento muy extraño.
> Python 2.7.3 (default, Apr 24 2012, 00:00:54) [GCC 4.7.0 20120414 (prerelease)] on linux2
>>> type(0-6)
<type 'int'>
>>> type(-6)
<type 'int'>
>>> type((0-6) is -6)
<type 'bool'>
>>>
bien eso es francamente loco – Wug
¿Qué te llevó a usar 'is' en primer lugar? No es algo que se deba usar a menudo en Python, aparte del caso 'is/is not None'. –
@ El comentario de Russel da en el clavo: el problema es que aparentemente alguien estaba usando "es" para comparar números y esperaba que funcionara como '=', una expectativa incorrecta. – LarsH