Les Variables.
 
L'affectation.

L'affectation permet de lier des objets à des noms de variables. Les affectations sont en général simples, mais il y a quand même quelques règles à suivre.

Python stocke des références sur des objets dans des noms ou des composantes de structure de données. Cela crée toujours des références à des objets et non des copies.

Les noms sont créés à la première affectation, il n'est pas nécessaire de prédéclarer les noms.

Les noms doivent être créés avant d'être référencés, en effet c'est une erreur d'utiliser un nom pas encore associé à une valeur. Python lève alors une exception.

Python comporte aussi des affectations implicites. Une affectation implicite est en fait toutes les affectations possibles qui ne comportent pas de =, par exemple lors d'importation de modules, ou d'instruction "for".

Il est aussi possible d'affecter des variables par paquets de tuples et de listes. Cette façon de faire permet des affectations par position, l'élément le plus à gauche du côté gauche de "=" prendra la valeur la plus à gauche du côté droit de "=".

L'affectation par cible multiples indiques que deux variables pointent sur le même objet, par exemple x = y = 2, ou x = 2 et y = x.
 

Règles sur les noms de variables.
 

La syntaxe pour les noms de variables doit commencer par une lettre ou un souligné, et peu se poursuivre avec un nombre quelconque de lettres, chiffres et soulignés.

Spam, spam et _spam sont corrects, mais 1_spam, spam: ou :spam ne le sont pas !

Python est sensible à la casse du nom de la variable, ainsi spam n'est pas égal à SPAM ou Spam.

Les mots réservés sont à part, Python lève une erreur si l'on emploie comme nom de variable un mot réservé (voir le chapitre 10).
 

La liaison.
 

Les variables sont modifiables et n'ont pas de type, c'est une simple référence sur un objet qui lui comporte un type. Il est donc possible d'affecter successivement plusieurs types à une même variable.
 

Variable global.
 

Par défaut, tout nom affecté dans une fonction local (propre) à celle-ci est créé uniquement quand la fonction est exécutée, et effacée en suite. L'instruction "global" permet d'affecter un nom au module englobant, Il sera donc visible depuis l'extérieur. Nous reverrons cela dans le chapitre dédié aux fonctions.
 

... global <nom>

... <instruction>