La declaración a = a + " " + b + " " + c
se puede desglosar según punteros.
a + " "
dice dame lo que a
señala, que no se puede cambiar, y agrega " "
a mi conjunto de trabajo actual.
memoria:
working_set = "Dog "
a = "Dog"
b = "eats"
c = "treats"
+ b
dice dame lo b
apunta a que no se pueden cambiar, y agregarlo a la corriente del conjunto de trabajo.
memoria:
working_set = "Dog eats"
a = "Dog"
b = "eats"
c = "treats"
+ " " + c
dice añadir " "
al conjunto actual.Luego, dame lo que apunta a c
, 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"
Por último, a =
dice mi establece puntero para señalar que el conjunto resultante.
memoria:
a = "Dog eats treats"
b = "eats"
c = "treats"
"Dog"
se recupera, ya que hay más punteros se conectan a ella es parte de la memoria. Nunca modificamos la sección de memoria "Dog"
en la que residía, que es lo que significa inmutable. Sin embargo, podemos cambiar qué etiquetas, si las hay, apuntan a esa sección de la memoria.
La cadena en sí es inmutable, pero la etiqueta puede cambiar. – mitch
La asignación de un nuevo valor a una variable existente es perfectamente válida. Python no tiene constantes. Esto es independiente de la mutabilidad del tipo de datos. –
Es posible que desee echar un vistazo a la función 'id()'. 'a' tendrá una identificación diferente antes y después de la asignación, lo que indica que apunta a diferentes objetos. Del mismo modo, con un código como 'b = a', encontrarás que 'a' y 'b' tendrán la misma identificación, lo que indica que están haciendo referencia al mismo objeto. – DRH