Immuable

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

Parmi les objets immuables, on retrouve notamment :

  • Les nombres entiers (int)
  • Les nombres décimaux (float)
  • Les chaînes de caractères (str)
  • Les booléens (bool)
  • Les tuples (tuple)

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.