Mi entendimiento fue que las cadenas de Python son inmutables.
Probé el siguiente código:
a = "Dog"
b = "eats"
c = "treats"
print a, b, c
# Dog eats treats
print a + " " + b + " " + c
# Dog eats treats
print a
# Dog
a = a + " " + b + " " + c
print a
# Dog eats treats
# !!!
¿No debería Python haber evitado la asignación? Probablemente me esté perdiendo algo.
¿Alguna idea?
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
y b
tendrá la misma identificación, lo que indica que están haciendo referencia al mismo objeto.