Qu'est-ce qu'un objet immuable en Python ?

Un objet immuable est un objet que l'on ne peut pas modifier.

Parmi les objets immuables, on retrouve notamment :

Si vous essayez de modifier un objet immuable, Python vous retournera une erreur :

prenom = "Patrick"
prenom[-1] = "e"

La seule solution est donc de créer un nouvel objet en mémoire :

prenom = "Patrick"
prenom = "Patrice"
print(prenom)

On pourrait penser parfois que l'on modifie une chaîne de caractères, par exemple en utilisant l'opérateur += :

prenom = "Patric"
prenom += "e"
print(prenom)

En fait, quand on fait ceci, on crée une nouvelle variable prenom qui contient une nouvelle valeur.

On peut vérifier cette affirmation grâce à la fonction id qui nous retourne l'adresse en mémoire d'un objet :

prenom = "Patric"
print("L'identifiant en mémoire de la variable prenom est", id(prenom))
prenom += "e"
print("L'identifiant en mémoire de la variable prenom est", id(prenom))

On voit bien avec le code ci-dessus que l'ID change après que l'on ait utilisé l'opérateur +=.

Il s'agit donc bien ici de deux variables prenom distinctes et non de la même variable qui a été modifiée.