La declaración a = a + " " + b + " " + c
se puede desglosar en función de las sugerencias.
a + " "
dice: dame los a
puntos a, que no se pueden cambiar, y agrega" "
a mi conjunto de trabajo actual.
memoria:
working_set = "Dog "
a = "Dog"
b = "eats"
c = "treats"
+ b
dice dame a qué b
apunta, que no se puede cambiar, y agrégalo al conjunto de trabajo actual.
memoria:
working_set = "Dog eats"
a = "Dog"
b = "eats"
c = "treats"
+ " " + c
dice agregar " "
al conjunto actual. Luego, dame a qué c
apunta, que no se puede cambiar, y agrégalo al conjunto de trabajo actual. memoria:
working_set = "Dog eats treats"
a = "Dog"
b = "eats"
c = "treats"
Finalmente, a =
dice establecer mi puntero para que apunte al conjunto resultante.
memoria:
a = "Dog eats treats"
b = "eats"
c = "treats"
"Dog"
se recupera, porque no más punteros se conectan a su parte de la memoria. Nunca modificamos la sección de memoria "Dog"
en la que residía, que es lo que se entiende por inmutable. Sin embargo, podemos cambiar qué etiquetas, si las hay, apuntan a esa sección de la memoria.
id()
función.a
tendrá una identificación diferente antes y después de la asignación, lo que indica que está apuntando a diferentes objetos. Del mismo modo, con un código como,b = a
lo encontraráa
yb
tendrá la misma identificación, lo que indica que están haciendo referencia al mismo objeto.