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 : | |
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 : |
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 :
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 :
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 :
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 :
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'instructionprint = 30
redéfinit la fonctionprint
en une variableprint
et vous ne pourriez plus alors utiliser la fonctionprint
!! ; - 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 exempletemp_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 Pythonbonjour = "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. Ainsia = 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 variablea
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 variablea
, je dois saisira = 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 variablesa
etb
contiendront 2.
L'affectationb = a
copie l'adressea
dansb
. Elle ne vide pas le contenu dea
.
Par contre, cela ne lie pas les variablesa
etb
pour la suite, si je modifiea
ensuite, la valeur deb
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) :