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.