Section 4.3

Variables

Dans cette section, nous allons nous intéresser aux variables. Les variables sont un moyen de stocker des données dans la mémoire de travail d'un programme. Chaque variable a un nom et permet de stocker une valeur ; valeur qui peut être modifiée au fil de l'exécution du programme. Nous allons voir comment assigner une valeur à une variable et comment utiliser cette variable dans des calculs.

Avant de plonger des explications plus techniques, considérons ensemble un exemple de programme qui utilise une variable :

x = 23 print(x)

Le programme ci-dessus contient deux lignes de code. La première ligne assigne la valeur 23 à la variable x. La deuxième ligne utilise la variable x dans un calcul. Ce calcul a pour effet de bord d'afficher la valeur de la variable x, ici 23, à l'écran.

! Remarque

À noter que le symbole = n'est pas à confondre avec l'opérateur ==. Comme nous l'avons vu dans la section précédente, l'opérateur == est utilisé pour calculer si deux valeurs sont égales. L'unique symbole = est utilisé pour assigner une valeur à une variable, comme nous allons le voir dans la suite de cette section.

Assignation

Pour assigner une valeur à une variable, on utilise le symbole =. Par exemple, pour assigner la valeur 45 à la variable n, on écrit:

n = 45

Lorsqu'on exécute ce programme, rien ne s'affiche à l'écran. En effet, la ligne x = 45 a pour seul effet de bord de mémoriser la valeur 45 sous le nom x. Ici, aucune opération n'a pour effet de bord d'afficher quoi que ce soit à l'écran.

! Remarque

La durée de vie d'une variable est limitée à la durée de vie du programme. Une fois l'exécution du programme terminée, toutes les variables sont effacées de la mémoire de travail. Pour se souvenir d'une valeur entre deux exécutions d'un programme, il faudra utiliser d'autre mécanismes, comme par exemple stocker des valeurs dans un fichier ou dans une base de données. Ces sujets seront abordés ultérieurement.

En Python, la partie de droite d'une assignation (ce qui vient après le =) peut être n'importe quel calcul, comme par exemple:

n = 2 + 3

Dans ce cas, le calcul n'est fait qu'une seule fois, au moment de l'assignation.

À noter que nous ne sommes pas limités à stocker uniquement des nombres dans une variable. Nous pouvons stocker n'importe quel type de données, comme par exemple des chaînes de caractères:

message = "Bonjour"

De plus, nous ne sommes pas limités à une unique variable :

notifications = 2 + 3 est_connecte = True message_accueil = "Bonjour"

! Remarque

Généralement, on essaiera de donner des noms de variables qui ont du sens en rapport avec la valeur qu'elles stockent. Par exemple, on préférera utiliser age plutôt que x pour stocker l'âge d'une personne, ou nom plutôt que y pour stocker le nom d'une personne. Pour des variables qui représentes des choses moins concrètes, on pourra toutefois utiliser des noms plus courts, comme n ou x.

En Python, les noms de variables sont sensibles à la casse. Cela signifie que age, Age et AGE sont trois variables différentes.

Pour former un nom de variable valide en Python, nous pouvons utiliser toutes les lettres de l'alphabet, les chiffres et le symbole _. Le nom d'une variable ne peut pas commencer par un chiffre. De plus, on préférera écrire les noms de variables en minuscules et sans accents. Comme on ne peut pas utiliser d'espaces, on utilisera le symbole _ pour séparer les mots composant le nom d'une variable s'ils sont plusieurs. Par exemple, on pourra utiliser le nom nom_de_famille pour stocker un nom de famille, mais pas nom de famille.

! Remarque

En Python, l'assignation d'une valeur à une variable ne peut pas apparaître au sein d'un calcul plus complexe. L'assignation doit toujours être faite sur une ligne à part et constitue ce qu'on appelle une instruction.

Utilisation

Pour utiliser une variable dans un calcul, on écrit simplement son nom. Par exemple, pour calculer le double de la valeur stockée dans la variable n, on écrit simplement 2 * n, comme dans l'exemple suivant :

n = 45 # On assigne la valeur 45 à la variable n print(2 * n) # On utilise la variable n dans un calcul

Lorsqu'on fait usage d'une variable qui n'a pas encore été assignée, Python nous renvoie une erreur.

print(n)

Une fois assignée, une variable peut être utilisée dans n'importe quel calcul et n'importe combien de fois.

n = 2 print(n) print(n + 1) print(n * n)

Notez qu'utiliser une variable dans un calcul n'a pas pour effet de changer sa valeur. Peut importe l'opération effectuée sur une variable, tant que la variable n'est pas réassignée, sa valeur ne change pas.

Comme nous l'avons mentionné précédemment, le calcul qui se trouve à droite du symbole = est effectué une seule fois, au moment de l'assignation. Lorsqu'on utilise une variable, on ne fait que réutiliser la valeur qui a été calculée lors de l'assignation. On ne recalcule pas la valeur. Par exemple, dans le code suivant, bien que la variable n soit utilisée dans deux calculs différents, le calcul qui se trouve à droite du symbole = n'est effectué qu'une seule fois :

n = 2 + 3 print(n) print(2 * n)

Pour vérifier ce phénomène, on peut utiliser une fonction avec effet de bord, comme input :

nom = input("Bonjour, votre nom: ") print(nom) print(nom)

Comme il y a un unique affichage de la chaîne de caractères "Bonjour, votre nom: ", on peut conclure que le calcul qui se trouve à droite du symbole = n'est effectué qu'une seule fois, et ce bien que la variable nom soit utilisée à plusieurs reprises dans la suite du programme.

Réassignation

Une variable peut être réassignée à tout moment dans le programme en utilisant à nouveau le symbole =. Par exemple :

n = 2 print(n) n = 3 print(n)

Lorsqu'on réassigne une variable, la valeur précédente est perdue. En effet, Python ne conserve pas en mémoire toutes les valeurs qui ont été assignées à une variable, mais seulement la dernière valeur assignée.

Notez que lors du calcul de la valeur à assigner à une variable, on peut utiliser la valeur de la variable elle-même. Par exemple, pour doubler la valeur d'une variable n, on peut écrire n = n * 2, comme dans le programme suivant :

n = 8 print(n) n = n * 2 print(n)

! Remarque

Les réassignations où une simple opération est appliquée sur une variable sont très courantes en Python, c'est pourquoi Python propose une syntaxe plus concise pour ce type de réassignation. À la place d'écrire n = n * 2, on peut écrire n *= 2. Cela fonctionne aussi pour de nombreux autres opérateurs comme +, - etc.

Incrémentation

Une opération de réassignation très courante est l'incrémentation. Incrémenter une variable consiste à lui ajouter une valeur donnée, appelée incrément. Très souvent, l'incrément est égal à 1. Pour incrémenter une variable n de 1, on peut écrire n = n + 1, ou encore, plus simplement, n += 1.

Échange de variables

Grâce à la réassignation, il est possible d'échanger les valeurs de deux variables. Cependant, si l'on essaie de le faire sans trop réfléchir, on peut se retrouver avec une solution incorrecte. Essayez le code suivant et essayez de comprendre la sortie :

a = 1 b = 2 print(a, b) a = b b = a print(a, b)

À la ligne 4, on assigne une nouvelle valeur à la variable a. La nouvelle valeur est la valeur de la variable b, qui est 2. Après cette ligne, la variable a contient donc la valeur 2. À la ligne 5, on assigne une nouvelle valeur à b. La nouvelle valeur est la valeur de la variable a. Or, la variable a contient maintenant la valeur 2, et non plus la valeur 1. Après cette ligne, la variable b contient donc la valeur 2. C'est pourquoi la sortie du programme est 2 2, car les deux variables contiennent la même valeur. Les variables a et b n'ont pas échangé leurs valeurs.

Une solution correcte pour échanger les valeurs de deux variables consiste à utiliser une troisième variable, qu'on appelle une variable temporaire. Voyez le code suivant :

a = 1 b = 2 print(a, b) temp = a a = b b = temp print(a, b)

! Remarque

La solution idiomatique en Python consiste à utiliser une assignation multiple. C'est-à-dire à assigner plusieurs variables en même temps, comme dans l'exemple suivant :

a = 1 b = 2 print(a, b) a, b = b, a print(a, b)

Dans ce genre d'assignation multiple, on sépare les variables par des virgules, et on sépare les valeurs à leur assigner par des virgules également. Lors d'une assignation multiple, toutes les valeurs de droite sont calculées (de gauche à droite) avant que les assignations ne soient effectuées. L'assignation multiple permet donc de facilement échanger les valeurs de plusieurs variables sans avoir à utiliser de variables temporaires.

Constantes

Certaines variables sont utilisées pour stocker des valeurs qui ne changent jamais. Ces variables sont appelées des constantes. Elles sont généralement écrites en lettres majuscules, comme PI ou HEURES_PAR_JOUR, afin de les distinguer des variables qui peuvent changer de valeur.

Auto-évaluation

En Python, on utilise pour assigner une valeur à une variable.

Auto-évaluation

La valeur d'une variable est calculée .

Auto-évaluation

À la fin de l'exécution d'un programme, les variables sont .

Auto-évaluation

En Python, pour incrémenter une variable n de 1, on peut écrire .

Dans cette section, nous avons vu le concept de variable en Python. Nous avons vu comment assigner une valeur à une variable et comment utiliser des variables dans des calculs. Nous avons aussi vu comment réassigner une valeur à une variable. Les variables vont jouer un rôle très important dans les prochaines sections, lorsque nous les combinerons avec différentes structures de contrôle.