Ir al contenido
  1. Posts/

¿Por qué id(1) == id(2-1)?

··137 palabras·1 min·

¿Por qué id(1) == id(2-1)?
#

var = 1
print(id(var))    # ej. 9793088
print(id(1))      # mismo id
print(id(2-1))    # mismo id
print(id(2))      # distinto id
  • id() devuelve la identidad del objeto (en CPython suele ser la dirección en memoria).
  • CPython tiene caching/interning de enteros pequeños (por defecto -5 a 256). Esos objetos se crean una vez y se reutilizan, por eso 1, la variable var con valor 1 y la expresión 2-1 apuntan al mismo objeto.
  • Los enteros son inmutables, así que compartir la misma instancia es seguro.
  • No confiar en is para comparar valores numéricos; usar == para comparar igualdad. is solo debe usarse para comparar identidad (por ejemplo, is None).

Lección clave
#

Python es un lenguaje increíblemente poderoso, pero conocer estos detalles te ayuda a evitar bugs difíciles de detectar.

También publicado en LinkedIn.
Juan Pedro Bretti Mandarano
Autor
Juan Pedro Bretti Mandarano