[pyar] Como maneja python los enteros negativos

Martín Marqués martin.marques en gmail.com
Vie Mar 11 14:53:56 ART 2011


El día 11 de marzo de 2011 11:41, Roberto Alsina
<ralsina en netmanagers.com.ar> escribió:
> On 3/11/2011 11:33 AM, Martín Marqués wrote:
>>
>> Cual es la logica detras de esto?
>
> Aaaaaaarghhhhh, no, esto de nuevo noooooo!

:-)

> Ehem. Ok, para saber si dos numeros son iguales usá ==. "is" no es el
> operador de igualdad, "is" es el operador de identidad.

En realidad estamos por dar Programación con Python y estamos viendo
el comportamiento de los operadores.

> O sea, "is" da True cuando dos nombres apuntan al MISMO objeto, no cuando
> son iguales. ((is is not ==) and (== != is)) == True.
>
> Dos objetos iguales pueden ser el mismo o no (con lo que a is not b pero a
> == b).
> Un único objeto puede no ser igual a sí mismo (con lo que a is b pero a !=
> b).

Justamente después hacemos cosas como:

a = 123
b = a
a is b

(esto ultimo da true)

> En particular, la implementación de python que estás usando, por una cosa de
> la vida, hace que algunos enteros chiquitos se comporten como singletons, y
> siempre usas la misma instancia. Como los enteros son inmutables, eso
> funciona correctamente y no tiene ningún efecto secundario desagradable.

Aca nos encontramos con una diferencia entre versiones.

Python 3.1.3 (r313:86834, Nov 28 2010, 11:28:10)
[GCC 4.4.5] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> 123 is 123
True
>>> -123 is -123
True

Python 3.2 (r32:88445, Feb 20 2011, 18:43:30)
[GCC 4.4.5] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> 123 is 123
True
>>> -123 is -123
False

Como veas algo cambio en 3.2 para que los negativos de Falso ahora.

> Pero eso es solamente un detalle de implementación y no es importante más
> allá de algún efecto de performance.
>
> Lo mas probable es que el unico caso en que uses is en un programa razonable
> de python es "x is None"

OK.

-- 
Martín Marqués
select 'martin.marques' || '@' || 'gmail.com'
DBA, Programador, Administrador



More information about the pyar mailing list