Quelqu'un peut-il m'expliquer ? J'ai joué avec la commande id() en python et je suis tombé sur ceci :
>>> id('cat')
5181152
>>> a = 'cat'
>>> b = 'cat'
>>> id(a)
5181152
>>> id(b)
5181152
Cela a du sens pour moi, sauf pour une partie : La chaîne 'cat' a une adresse en mémoire avant que je l'assigne à une variable. Je ne comprends probablement pas comment fonctionne l'adressage de la mémoire, mais quelqu'un peut-il m'expliquer cela ou au moins me dire que je devrais me documenter sur l'adressage de la mémoire ?
Tout cela est bien beau, mais cela m'a encore plus troublé :
>>> a = a[0:2]+'t'
>>> a
'cat'
>>> id(a)
39964224
>>> id('cat')
5181152
Ça m'a paru bizarre parce que chat est une chaîne de caractères avec une adresse de 5181152 mais le nouveau a a une adresse différente. Donc s'il y a deux chat dans la mémoire, pourquoi deux adresses ne sont-elles pas imprimées pour id('chat') ? Ma dernière idée était que la concaténation avait quelque chose à voir avec le changement d'adresse, alors j'ai essayé ceci :
>>> id(b[0:2]+'t')
39921024
>>> b = b[0:2]+'t'
>>> b
'cat'
>>> id(b)
40000896
J'aurais pensé que les identifiants seraient les mêmes, mais ce n'est pas le cas. Qu'en pensez-vous ?