Vidéo 3a : Variables, expressions¶
Variables¶
Voici un code utilisant une variable, appelée toto
:
1 2 | toto = 42
print(toto + 10)
|
3 | 52
|
Ligne 1 :
toto
désigne une variable qui référence 42. La variabletoto
est comme une étiquette qui permet d’accéder à l’entier 42 écrit quelque part en mémoire. L’entier 42 est ce qu’on appelle un objet au sens d’une entité présente dans la mémoire de l’ordinateur au moment où Python examine l’instructiontoto = 42
.Ligne 2 :
- d’abord Python regarde s’il dispose d’une variable
toto
référencée en mémoire (c’est le cas, cf. ligne 1) puis il récupère le contenu de cet emplacement-mémoire et effectue le calcul demandé. toto + 10
est une expression et qui a une valeur (ici 52).print
permet d’afficher la valeur de l’expression.
- d’abord Python regarde s’il dispose d’une variable
Un nom de variable est sensible à la casse (lettre en majuscule ou minuscule) :
1 2 3 4 | year = 2000
Year = 3000
print(year)
print(Year)
|
5 6 | 2000
3000
|
Vocabulaire¶
- L’instruction
toto = 42
est une affectation : on affecte 42 à la variabletoto
. - Quand une variable est définie pour la première fois, la première valeur qu’elle reçoit lorsqu’elle est définie s’appelle l”initialisation. Donc, ci-dessus,
toto
est initialisée à 42.
En Python, une variable est définie essentiellement par affectation.
La notion de variable est fondamentale en programmation et est le premier maillon vers l’abstraction. Il est capital d’écrire du code où les données sont placées dans des variables.
Post-it¶
Un document qui explique très bien le modèle mental de la variable en Python est ICI : une variable Python un post-it que l’on peut placer et déplacer sur des objets.
Voir aussi ce message de Ben Finney ainsi que Facts and myths about Python names and values et regarder la vidéo associée.
Statut de la variable en Python¶
L’affectation en Python consiste à associer (to bind) un nom à un objet créée ou déjà placé en mémoire. Le point essentiel est que justement le nom n’est pas un objet, il a juste une valeur lexicale de désignation d’un objet. Quand on parle de variable en Python, on parle en fait de ces noms.
En C une variable est un contenu. En Python, une variable est juste un nom.
http://stackoverflow.com/a/3648524/127555
http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables
Certains affirment que Python en fait n’a pas de variable, par exemple :
https://mail.python.org/pipermail/python-list/2014-May/thread.html
Explication de Raymond Hettinger : http://stackoverflow.com/a/15697476/127555
Notion d’expression¶
Soit le code suivant :
1 2 3 4 5 | d = 4
u = 2
x = 10 * d + u
print(10 * x + 1)
|
6 | 421
|
On y définit des variables, par exemple d
ou u
, et en combinant ces variables avec des constantes (comme 10
) et des opérateurs comme *
et +
, on obtient des « écritures » qui s’appellent des expressions, comme 10 * d + u
(ligne 3).
En combinant des expressions à nouveau avec des opérateurs et des constantes, on obtient de nouvelles expressions, comme ci-dessus 10 * x + 1
(ligne 5).
Par définition, une expression a toujours une valeur. Par exemple la valeur de l’expression 10 * x + 1
est l’entier 421. En revanche, l’écriture d = 4
(ligne 1) n’a pas de valeur et n’est pas une expression.
Pour afficher une expression E
, on utilise l’instruction print(E)
et qui affiche dans une sortie sous forme textuelle la valeur de cette expression.
Syntaxe basique des noms de variables¶
Voici un programme utilisant des noms valides de variables :
1 2 3 4 | tokyo = 2020
tokyo2020 = 32
TOKYO = 2020
tokyoTokio = 32
|
La plupart du temps, un nom de variable est un mot formé de caractères alphabétiques, (majuscules ou minuscules) ou de chiffres. Il ne peut y avoir aucun élément de ponctuation ni d’espace dans un nom de variable, sinon, la plupart du temps, vous aurez une erreur de type syntaxError
:
1 | chou-fleur = 42
|
2 | SyntaxError: can't assign to operator
|
Par ailleurs, une variable ne peut commencer par un chiffre :
1 | 2020Tokyo = 32
|
2 | SyntaxError: invalid syntax
|
Les noms de variables sont sensibles à la casse :
1 2 | tokyo = 2020
print(Tokyo)
|
- Ligne 2 : les variables
Tokyo
ettokyo
sont différentes. Le 2e nom n’a pas été défini (d’où l’erreur).
Certains noms réservés du langage sont interdits comme nom de variable :
1 2 3 | bronze = 3
argent = 2
or = 1
|
- Ligne 3 :
or
est un mot-clé du langage (qui signifie ou en anglais).
Le seul caractère non-alphanumérique autorisé est le blanc souligné :
1 2 | paris_2024 = 42
print(paris_2024)
|
- Ligne 3 :
or
est un mot-clé du langage (qui signifie ou en anglais).
Pour saisir un blanc souligné, taper simultanément AltGr + 8
.