Meu entendimento era que as strings Python são imutáveis.
Tentei o seguinte 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
# !!!
O Python não deveria ter impedido a atribuição? Provavelmente estou perdendo alguma coisa.
Qualquer ideia?
id()
função. a
terá um id diferente antes e depois da atribuição, indicando que está apontando para objetos diferentes. Da mesma forma com código como b = a
você encontrará a
e b
terá o mesmo id, indicando que eles estão fazendo referência ao mesmo objeto.