Si ejecutamos estas sentencias de asignación:

   1: a = "banana"

   2: b = "banana"

Esta claro que a y b apuntan ambos a cadenas con las letras “banana“. Pero no podemos saber si están apuntando a la misma cadena.

Hay dos posibles estados:

Sin título

En un caso, a y b se refieren a dos cosas diferentes que tienen el mismo valor.

En el segundo caso, se refieren a la misma cosa. Estas “cosas” tienen nombres; se les denomina objetos. Un objeto es una cosa a la que se puede referir una variable.

Cada objeto tiene un identificador único, que podemos obtener por medio de la función id. Imprimiendo los identificadores de a y b podemos saber si apuntan al mismo objeto.

   1: >>> id(a)

   2: 135044008

   3: >>> id(b)

   4: 135044008

 

Curiosamente, las listas se comportan de otra manera. Cuando crea dos listas, obtiene dos objetos:

   1: >>> a = [1, 2, 3]

   2: >>> b = [1, 2, 3]

   3: >>> id(a)

   4: 135045528

   5: >>> id(b)

   6: 135041704

De manera que el diagrama de estado sería tal como este:

Sin título1

a y b tienen el mismo valor, pero no se refieren al mismo objeto.