Variables


En python, une variable a un nom et on lui associe une valeur.

Création dune variable

Créer une variable en python est extrêmement simple: il suffit de lui affecter une valeur grâce au symbole =:

>>> x = 13

Pour lire le contenu dune variable (en mode interactif), il suffit de taper son nom:

>>> x
13

Évolution dune variable

Contrairement à la notion de variable en mathématique (où la valeur ne change en général pas), les variables en python portent bien leur nom: elles varient !

Pour changer la valeur dune variable, il suffit de lui en affecter une nouvelle. Le nom de la variable sera alors associé à la nouvelle valeur:

>>> x = 1
>>> x
1
>>> x = 35
>>> x
35

Laffectation à x de la valeur 35 écrase lancienne valeur 1 de la mémoire: on peut affirmer que la variable x a changé de valeur.

Affectation \(\neq\) égalité

Un point très important: le symbole = en python est un symbole daffectation et non pas un symbole dégalité. Dailleurs, pour tester légalité entre deux valeurs en python (et dans de nombreux autres langages de programmation) on utilise le double symbole dégalité == comme nous le verrons un peu plus tard.

Voici un exemple illustrant cette nuance:

>>> x = 1
>>> x
1
>>> x = x + 1
>>> x
2

On se rend bien compte que lon ne peut pas comprendre la ligne x = x + 1 comme une égalité mathématique. Dailleurs, en mathématique, légalité \(x = × + 1\) serait toujours fausse. Et si on la considérait comme une équation, elle naurait aucune solution.

Voici comment python gère cette instruction:

  1. Il commence par calculer la valeur du membre de droite. Comme x vaut initialement 1, le membre de droite vaudra 2.
  2. Ensuite, il affecte ce résultat à la variable se trouvant dans le membre de gauche, qui se trouve être encore une fois x: autrement dit, x change de valeur et vaudra à présent 2.

Linstruction x = x + 1 est très courante en informatique: elle sert à incrémenter une variable de 1.

Attention, il nest pas possible déchanger les deux membres de laffectation: le membre de gauche doit nécessairement être le nom dune variable à laquelle sera affecté le résultat du calcul du membre de droite.

Ainsi, linstruction x + 1 = x déclenche une erreur:

>>> x + 1 = x

Voici lerreur affichée par linterpréteur python:

    File "<stdin>", line 1
SyntaxError: can't assign to operator

Faut-il déclarer les variables en python ?

En mathématiques, on ne peut pas utiliser une variable (ou une indéterminée) sans lavoir spéciée au préalable, avec par exemple une tournure classique: Soit \(x\) le réel tel que \(\dots\).

Dans de nombreux langages informatiques, il est de même nécessaire de déclarer une variable avant de pouvoir lutiliser, en précisant par exemple que la variable x prendra toujours des valeurs entières.

En python, non seulement cela nest pas nécessaire comme nous lavons vu plus haut, ce mécanisme est même inexistant. Cela comporte des avantages et des désavantages: Dun côté, on gagne en souplesse, lécriture des programmes est moins encombrée de tâches administratives; Le revers de la médaille est que labsence de déclaration rend la détection des erreurs (bugs) bien plus délicate, comme nous aurons hélas loccasion de nous en rendre compte tout au long de lannée.

Cependant, il demeure totalement interdit de vouloir accéder à une variable qui naura pas été initialisée au préalable:

>>> print(toto)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'toto' is not defined

Ici, la tentative daccès à une variable toto est vouée à léchec, puisquaucune variable portant ce nom na été définie au préalable.

Remarque: Ce comportement est plutôt à notre avantage, car il permet de détecter facilement les fautes de frappe: si la variable (bien définie) toto est inopinément transformée en tato, python affichera lerreur précédente et nous trouverons relativement rapidement où se situe le problème dans notre code.

On a vu un peu plus haut que dautres langages de programmation imposent la déclaration préalable des variables avant leur utilisation, mais aussi imposent de déclarer le type de données quelles pourront contenir (nombre entier, nombre à virgule flottante, chaîne de caractères, etc\(\dots\)

En python, non seulement cest inutile, mais en outre python nassocie pas à une variable un quelconque type: ce sont les valeurs qui ont un type associé (python ne confondra jamais un entier avec une chaîne de caractère, par exemple), les variables sont simplement des noms auxquels sont associées des valeurs dont le type peut évoluer au cours du temps.

>>> x = 42
>>> x
42
>>> x = 3.1415927
>>> x
3.1415927
>>> x = "Bonjour"
>>> x
'Bonjour'

Règle dor: À lintérieur dun programme (ou dune fonction), on sastreindra toujours (du moins dans le cadre de a NSI) à associer à une variable donnée un unique type de donnée, même si le langage autorise des débordements (cest-à-dire une grande souplesse).