Comment comprenez-vous le modèle de référence sur lequel repose le langage de programmation Python?
sobes.tech IA
Réponse de l'IA
En Python, les variables sont des références (liens) vers des objets en mémoire, et non des conteneurs pour les valeurs elles-mêmes. Lorsqu'on assigne une valeur à une variable, celle-ci commence en fait à pointer vers un objet contenant cette valeur. En modifiant une variable qui référence un objet mutable (par exemple, une liste ou un dictionnaire), c'est l'objet lui-même qui est modifié. En modifiant une variable qui référence un objet immuable (par exemple, un nombre, une chaîne ou un tuple), un nouvel objet est créé en mémoire, et la variable commence à pointer vers celui-ci.
# Objet immuable (int)
a = 10
b = a # a et b référencent initialement le même objet
print(id(a), id(b)) # Même id
a = 20 # Crée un nouvel objet 20, a le référence
print(id(a), id(b)) # Id différent, b référence toujours 10
# Objet mutable (liste)
list1 = [1, 2, 3]
list2 = list1 # list1 et list2 référencent la même liste
print(id(list1), id(list2)) # Même id
list1.append(4) # Modifie l'objet référencé par les deux
print(list1)
print(list2) # Les deux listes sont modifiées
print(id(list1), id(list2)) # Toujours le même id
Le mécanisme de comptage de références est utilisé pour gérer automatiquement la mémoire. Chaque objet suit le nombre de variables qui y font référence. Lorsqu'il atteint zéro, l'objet devient inaccessible, et le ramasse-miettes libère la mémoire qu'il occupe.
Une différence importante avec les langages avec stockage direct des valeurs dans les variables (par exemple, C) : en Python, lors de l'affectation b = a, la valeur de a n'est pas copiée dans b, mais b commence à faire référence au même objet que a.