Une variable = un nom qui pointe vers un objet en mémoire.
nombre = 5 # crée l'objet 5, y associe le nom "nombre"
nombre = 5
nombre_2 = 5
# Les deux pointent vers le même objet 5 en mémoire
Réassigner une variable crée un nouvel objet ; l'ancien n'est plus référencé :
nombre = 5
nombre = 1 # l'objet 5 n'est plus référencé → supprimé par le GC
id(nombre) # adresse mémoire de l'objet
id(nombre_2) # même adresse si même objet
Python supprime automatiquement les objets sans référence. Le développeur n'a pas à gérer la mémoire manuellement.