Aller au contenu

Les variables⚓︎

Qu'est-ce qu'une variable ?⚓︎

Toutes les opérations que nous avons faîtes ont été perdues ; par exemple si vous avez oublié le résultat de \(2^{10}\) vous devrez taper à nouveau 2**10. C'est un peu comme si vous oubliez votre prénom constamment et que vous deviez le noter sur un bout de papier que vous sortiriez à chaque fois que vous en avez besoin !

Il est donc impératif de stocker simplement les informations et de savoir les retrouver facilement.

Par exemple, nous aimerions stocker la valeur 3,1415926. Pour cela nous allons définir une variable que nous appelerons par exemple pi.

Affectation⚓︎

Pour cela, tapez pi = 3.1415926 :

Cette opération est appelée une affectation : nous avons affecté à une variable pi la valeur 3.1415926. Nous pourrons ensuite réutiliser cette valeur, par exemple tapez 2*pi.

Il y a deux façons de voir ce que Python a fait ici.

De façon imagée, une boîte a été créée, cette boîte a une étiquette sur laquelle figure le nom de la variable (son identifiant), ici pi et nous avons placé dans cette boîte le nombre 3.1415926 : monimg
De façon plus proche de la réalité, le nombre 3.1415926 est converti en binaire (suite de 0 et de 1) puis placé à une certaine adresse (à un certain endroit) dans la mémoire et la variable pi permet de retrouver cette valeur dans la mémoire : monimg

Pas d'actualisation

Une affectation telle que a = b est une copie à un certain instant de la valeur de b dans a. Si la valeur de b change ensuite, celle de a ne sera pas modifiée (contrairement à ce qui se passe dans un tableur).

Ainsi, à la fin de :

🐍 Script Python
b = 5
a = b
b = 3

la variable a aura pour valeur 5.

Existence d'une variable⚓︎

Une variable non créée ne peut pas être utilisée ! Par exemple, testez successivement chacune des instructions :

🐍 Script Python
valeur1 = 5.3
valeur2 = 2.1 
valeur1
valeurs2
valeur1 * valeur2
valeur1valeur2
Explications

Les variables valeur1 et valeur2 ont été définies donc peuvent être utilisées.

Par contre les variables valeurs2 et valeur1valeur2 n'existent pas d'où les messages d'erreur.

Les valeurs d'une variable⚓︎

Une variable peut contenir n'importe quel type d'objet Python (nombre, texte, etc.), par exemple :

🐍 Script Python
chn1 = "bonjour"
chn1
chn2 = " tout le monde"
chn = chn1 + chn2
chn
rayon = 5
pi = 3.14
volume = (4/3)*pi*(rayon**3)
volume

Le type d'une variable⚓︎

Dans certains langages, il faut indiquer le type d'une variable avant de l’utiliser (typage statique), par exemple en Java pour définir une variable entière nous écririons : int mavariable = 5;

En Python, le type d'une variable est défini au moment d'une affectation et peut changer en cours d’exécution (typage dynamique). Le type d'une variable est donc en Python le type de la valeur qui est affectée à cette variable.

Testez donc cette suite d'instructions :

🐍 Script Python
var = 5
type(var)
var = "Hello !"
type(var)

Astuce

Vous pouvez utiliser la flèche vers le haut du clavier pour rappeler une commande déjà entrée...

L'identifiant d'une variable⚓︎

Choisissez des noms explicites⚓︎

Dans un exemple précédent, nous avions appelé notre variable pi mais cela n'aurait rien changé d'un point de vue informatique de l'appeler a ou mavariable ou bonjour. Simplement, cela aurait compliqué la tâche du programmeur...

Imaginez par exemple un logiciel de pilote automatique d'avion : celui va considérer de nombreuses conditions extérieurs variables telles que la température, la force du vent, etc. Si le programmeur appelle i la température et j la force du vent alors il y a un risque d’accident s'il confond i et j à un moment du programme !

Il est donc conseillé de choisir des noms de variables explicites, ici par exemple temp et force_vent !

Évitez les accents⚓︎

Pour des raisons d'encodage de texte, je vous déconseille vivement d'utiliser des accents dans vos noms de variables ou de fichiers. Cela vous évitera bien des soucis...

Certains noms de variables ne sont pas valides⚓︎

  • nous avons vu que certains mots (for, if, etc.) font partie du langage Python, évitez donc de les utiliser comme noms de variables. Ainsi l'instruction print = 30 redéfinit la fonction print en une variable print et vous ne pourriez plus alors utiliser la fonction print !! ;
  • un nom de variable ne peut pas commencer par un nombre, par exemple 2pi = 6.28 n'est pas valide ;
  • un nom de variable ne peut pas comporter certains caractères, par exemple monmail@ = 'exemple@free.fr' n'est pas valide.

Exercice

Deux conventions d'écriture fréquemment utilisées⚓︎

Python respecte la casse : il fait une différence entre les caractères majuscules et minuscules. Par exemple, Temp, temp, TEMP sont trois variables différentes. Pour limiter les erreurs, il est donc conseillé d'utiliser une des deux conventions suivantes :

  • snake case (recommandée en Python) : toutes les lettres en minuscule et les mots séparés par un tiret bas _, par exemple temp_exterieure ;
  • camel case : la première lettre en minuscule puis des majuscules à chaque nouveau mot, par exemple tempExterieure.
Remarque

Il est parfaitement possible de commencer un identifiant de variable par une majuscule mais l'usage est de réserver cela aux classes (programmation orientée objet).

Constante ou variable ?⚓︎

La valeur contenue dans une variable peut changer (d'où le nom de variable !).

Si nous voulons stocker une valeur qui ne doit pas changer, par exemple le nombre de cases d'un échiquier, il est d'usage d'utiliser un nom de variable en majuscule. Par exemple NB_CASES = 64.

Propriétés de l'affectation⚓︎

Testez ce qui suit avec cette console :

  • nous pouvons affecter à une variable une constante ou une expression, le script suivant comporte trois affectations :
    🐍 Script Python
    bonjour = "Bonsoir !!"
    bonjour
    rayon = 5
    perimetre = 2 * 3.14 * rayon
    
  • non-symétrie : le symbole =, utilisé depuis le langage Fortran, peut nous induire en erreur ; il aurait été préférable d'utiliser le symbole ← pour indiquer dans quel sens se fait l'affectation. Ainsi a = b ne revient pas à b = a. Vérifiez que la suite d'instructions :
    a = 2
    b = 7
    a = b
    a
    n'est pas équivalente à :
    a = 2
    b = 7
    b = a
    a

  • propriété d'écrasement (ou "c'est le dernier qui a parlé qui a raison") : à la suite des instructions
    a = 2
    a = 3
    la variable a contient 3 et pas 5.
    Une affectation dans une variable écrase le contenu précédent. Si je veux ajouter 3 au contenu d'une variable a, je dois saisir a = a + 3.

Remarques
  • L'écriture val = val + 1 est impossible en mathématiques mais est très utilisée en informatique. Elle signifie valnouvelle = valancienne + 1.
  • Il existe une autre syntaxe plus courte mais moins lisible : val += 1.
  • propriété de copie : à la suite des instructions :
    a = 2
    b = 7
    b = a
    les deux variables a et b contiendront 2.
    L'affectation b = a copie l'adresse a dans b. Elle ne vide pas le contenu de a.
    Par contre, cela ne lie pas les variables a et b pour la suite, si je modifie a ensuite, la valeur de b n'est pas modifiée.
    Testez par exemple (la fonction id() donne une espèce d'adresse de la variable) :
    a = 2
    id(a)
    b = a
    id(b)
    a = 5
    id(a)

  • affectations multiples : il est possible en Python (ce n'est pas le cas pour d'autres langages, je ne l'utiliserai donc pas) de faire plusieurs affectations en même temps, suivant une des deux syntaxes suivantes :
    a = b = 5
    x, y = 2, 3

Résumé et exercices : les variables⚓︎

À retenir

  • une variable permet de mémoriser une valeur de n'importe quel type ;
  • il faut choisir des noms de variables explicites et bien écrits ;
  • l'affectation d'une valeur à une variable efface la valeur précédente éventuelle.

Exercice

Répondez aux questions suivantes (la fonction print affiche ce qui est entre parenthèses) :

Exercices

Quelques exercices à faire sans utiliser Python :

  1. Trois exercices
  2. Exercice à faire :