Je commence juste quelques manipulations de chaînes et j'ai trouvé cette question. J'essayais probablement de faire quelque chose comme l'OP, "d'habitude moi". Les réponses précédentes n'ont pas dissipé ma confusion, mais après y avoir réfléchi un peu, j'ai finalement "compris".
Tant que a
, b
, c
, d
et e
ont la même valeur, ils font référence au même endroit. La mémoire est sauvegardée. Dès que la variable commence à avoir des valeurs différentes, elles commencent à avoir des références différentes. Mon expérience d'apprentissage est venue de ce code:
import copy
a = 'hello'
b = str(a)
c = a[:]
d = a + ''
e = copy.copy(a)
print map( id, [ a,b,c,d,e ] )
print a, b, c, d, e
e = a + 'something'
a = 'goodbye'
print map( id, [ a,b,c,d,e ] )
print a, b, c, d, e
La sortie imprimée est:
[4538504992, 4538504992, 4538504992, 4538504992, 4538504992]
hello hello hello hello hello
[6113502048, 4538504992, 4538504992, 4538504992, 5570935808]
goodbye hello hello hello hello something