Variables et nommage
Stockez des valeurs sous des noms, comprenez l'affectation et suivez les conventions de nommage de Python.
- Affecter des valeurs à des variables et les réaffecter
- Expliquer pourquoi les variables sont des étiquettes, pas des boîtes
- Utiliser les opérateurs d'affectation augmentée (+=, -=, *=, /=)
- Suivre les conventions de nommage snake_case
Pourquoi une valeur a-t-elle besoin d’un nom ?
Écrivez un programme qui calcule la moyenne de trois notes d’interrogation :
Supposez maintenant que les notes changent, le professeur veut la moyenne de . Sans noms, l’expression de la moyenne apparaît à plusieurs endroits et vous devez en localiser et en modifier chacun à la main. C’est une recette pour en oublier un.
Un mathématicien résout cela en nommant les quantités : écrivez une fois, puis référez-vous-y pour toujours. Un programme a le même besoin : les valeurs apparaissent sans cesse, et la machine doit retrouver la valeur actuelle à chaque fois. La réponse de Python est la variable, un nom qui pointe vers une valeur. Dès que score1 nomme le , vous pouvez écrire score1 autant de fois que vous voulez, et Python cherche sa valeur actuelle à chaque fois.
= relie un nom à une valeur
En mathématiques, « soit » fixe le symbole au nombre . Python fait la même chose avec exactement le même symbole :
score1 = 7.5
score2 = 8.5
score3 = 9.0
average = (score1 + score2 + score3) / 3
print(f"{average:.2f}") # 8.33Le membre de droite est évalué d’abord, et seulement ensuite le nom de gauche commence à pointer vers le résultat. Si vous changez les notes et relancez le fichier, le même calcul utilisera les nouvelles valeurs, les noms donnent à la machine un endroit où chercher « la valeur actuelle de ».
Les noms peuvent être redirigés
C’est ici qu’une variable ne ressemble pas à un symbole mathématique. En mathématiques, est une affirmation sans solution. En Python, c’est une instruction parfaitement ordinaire, qui se lit de droite à gauche :
signifie « la valeur suivante de est la valeur actuelle, plus un ». Dès que vous voyez cela en Python, vous comptez :
count = 0
count = count + 1 # l'ancienne valeur 0 a été lue, 1 a été calculé, le nom pointe maintenant vers 1
count = count + 1 # désormais count nomme 2Réaffecter consiste à rediriger une étiquette, pas à remplir une boîte. L’ancienne valeur n’est ni « modifiée » ni « remplacée », le nom regarde simplement une autre valeur.
Lire-modifier-stocker en un seul geste : +=
Le schéma ci-dessus, lire count, ajouter 1, faire pointer count vers le résultat, est si répandu que Python offre un raccourci. Disons que le pas vaut et que vous parcourez une suite générique :
Écrite, la mise à jour se lit x = x + h. Python fusionne la lecture et le stockage en un seul opérateur :
x = 5
x += 1 # identique à x = x + 1 -> 6
x -= 2 # identique à x = x - 2 -> 4
x *= 3 # identique à x = x * 3 -> 12
x /= 4 # identique à x = x / 4 -> 3.0Lisez x += h à voix haute comme « avance x de h », un seul mouvement, comme le fait la récurrence.
Un nom que l’on peut prononcer
Presque n’importe quel mot peut servir de nom, mais être valide n’est pas la même chose qu’être bon. Qu’est-ce qui est le plus instructif en relisant un script de notes ?
x = 87.5 # nomme un nombre, rien de plus
quiz_score = 87.5 # nomme la grandeurQuelques règles et une habitude :
- Un nom commence par une lettre ou un tiret bas et ne peut contenir ensuite que des lettres, des chiffres et des tirets bas,
second_score✓,2nd_score✗. - La convention de Python est le snake_case : des mots en minuscules reliés par
_, doncstudent_name, passtudentName. Cela correspond à la lecture à voix haute :quiz_score, c’est la note de l’interrogation. - Un petit ensemble de mots est réservé,
if,for,class,True,False, et ne peut pas servir de nom.
Vous relirez votre propre code plus souvent que vous ne l’écrivez ; le nom que vous choisissez en écrivant est ce qui fera ressortir le sens quand vous lirez plus tard.
Un exemple travaillé : le total cumulé
Réassigner paie dès qu’une quantité doit se construire pas à pas, la récurrence avec la somme en cours comme :
total = 0
total += 8.5 # total devient 8.5
total += 9.0 # puis 17.5
total += 10.0 # puis 27.5
average = total / 3
print(f"{average:.2f}") # 9.17Chaque += avance d’un pas : lire la valeur actuelle, additionner, re-pointer le nom vers le résultat. Les noms total et average maintiennent les deux quantités distinctes, si bien que la recette se lit comme ce qu’elle fait.
Pièges courants
- Utiliser un mot réservé comme nom.
class = "Math"lève uneSyntaxError,classest réservé. - Commencer par un chiffre.
2nd_place = "B"est invalide ;second_place = "B"est correct. - Confondre
=et==.=fait pointer un nom vers une valeur ;==demande si deux valeurs sont égales. Un glissement d’un caractère transforme une affirmation en question. +=écrit sur un nom qui doit déjà exister.total += 1sur un nom jamais assigné lève uneNameError. Le geste lit d’abord la valeur actuelle ; un nom sans valeur n’a rien à lire.
🧩 Défis
🧩 Défi, réfléchissez d'abord, puis révélez
Si x = 5, puis y = x, puis x = 10, que vaut y ? Expliquez pourquoi en termes de « les noms pointent vers des valeurs » et non « les boîtes contiennent des valeurs ».
💡 Réponse : y vaut toujours 5. Quand y = x s'est exécuté, les deux noms pointaient vers 5. Rediriger x vers 10 déplace l'étiquette de x ; y pointe toujours vers 5. Les étiquettes pointent ; rien n'est « copié dans une boîte ».
🧩 Défi, réfléchissez d'abord, puis révélez
Écrivez un programme qui échange deux variables : a = 7, b = 3. Après l’échange, a doit valoir 3 et b doit valoir 7. Faites-le sans variable temporaire (Python a un petit truc élégant).
💡 Réponse : a, b = b, a, Python évalue d'abord le membre de droite (les deux anciennes valeurs), puis fait pointer les noms de gauche vers elles. Pas de variable temporaire.
🧩 Défi, réfléchissez d'abord, puis révélez
Lesquels de ces noms de variable sont valides, et pourquoi les invalides échouent-ils : _count, 2nd, my-name, total, class ?
💡 Réponse : _count ✓ (commencer par un tiret bas est permis), 2nd ✗ (commence par un chiffre), my-name ✗ (le trait d'union est l'opérateur de soustraction, interdit dans un nom), total ✓, class ✗ (mot réservé).
🤔 Questions socratiques
- Pourquoi Python choisit-il le
snake_caseplutôt que lecamelCase? Que suggère la métaphore visuelle du tiret bas sur la façon de lire les noms de variables ? x += 1etx = x + 1donnent le même résultat pour les nombres. Pouvez-vous imaginer une raison pour laquelle un langage offrirait quand même les deux formes ?- Si les variables sont des étiquettes, pas des boîtes, que se produit-il avec
a = [1, 2, 3], puisb = a, puisb.append(4)? Est-ce queavoit le4? (Essayez, cela annonce les objets mutables, vus bien plus tard.)
✅ Vérification rapide
1. Que vaut y après : x = 10; y = x; x = 20 ?
2. Lequel est un nom de variable Python valide ?
3. Que vaut x après : x = 5; x += 3; x -= 1 ?