Adloun

Ce qu'est vraiment le nom d'une variable

Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 2 — Variables, types et affectations · Affectation et séquence d'instructions

Énoncé

Exécuter le programme suivant et expliquer l'affichage. Que se passe-t-il si l'on remplace la dernière ligne par print(id(a) == id(b)) ?

a = 5
b = a
a = 7
print(a, b)

Corrigé

L'affichage est 7 5.

La ligne b = a copie la valeur de a dans b au moment où elle s'exécute ; elle ne crée aucun lien durable entre les deux noms. Modifier a ensuite ne touche donc pas b.

Avec print(id(a) == id(b)), on compare les emplacements mémoire désignés : le résultat est False après a = 7, mais aurait été True juste après b = a — les deux noms désignaient alors le même entier .

Cette distinction paraît théorique en Seconde, où l'on ne manipule que des nombres et du texte. Elle deviendra décisive avec les listes (chapitre 6) : là, b = a fera bien pointer les deux noms vers la même liste, et modifier l'une modifiera l'autre.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.