Maintenant que vous pensez tout savoir à propos des dictionnaires,
des tuples et des listes (hum!), revenons à notre programme d'exemple du
Chapitre 2, odbchelper.py.
Python dispose de
variables locales et globales comme la plupart des autres langages,
mais il n'a pas de déclaration explicite des variables. Les variables
viennent au monde en se voyant assigner une valeur et sont
automatiquement détruites lorsqu'elles se retrouvent hors de
portée.
Il y a plusieurs points intéressants ici. Tout d'abord, notez
l'indentation. Une instruction if est un bloc de code
et nécessite d'être indenté tout comme une fonction.
Deuxièmement, l'assignation de variable est une commande étalée
sur plusieurs lignes avec une barre oblique
(«\») servant de marque de continuation
de ligne.
Lorsq'une commande est étalée sur plusieurs lignes avec le
marqueur de continuation de ligne
(«\»), les lignes suivantes peuvent
être indentées de n'importe qu'elle manière, les règles d'indentation
strictes habituellement utilisées en Python
ne s'appliquent pas. Si votre IDEPython indente automatiquement les lignes
continuées, vous devriez accepter ses réglages par défauts sauf raison
impérative.
Les expressions entre parenthèses, crochets ou accolades (comme
la définition d'un dictionnaire)
peuvent être réparties sur plusieurs lignes avec ou sans le caractère
de continuation («\»). Je préfère
inclure la barre oblique même lorsqu'elle n'est pas requise car je
pense que cela rends le code plus lisible mais c'est une question de
style.
Troisièmement, vous n'avez jamais déclaré la variable
myParams, vous lui avez simplement assigné une
valeur. C'est comme en VBScript sans l'option
option explicit. Heureusement, à l'inverse de
VBScript, Python
ne permet pas de référencer une variable à laquelle aucune valeur n'a
été assigné. Tenter de le faire déclenchera une exception.
3.4.1. Référencer des variables
Exemple 3.18. Référencer une variable non assignée
>>> xTraceback (innermost last):
File "<interactive input>", line 1, in ?
NameError: There is no variable named 'x'>>> x = 1>>> x1
Un jour, vous remercierez Python pour
ça.
3.4.2. Assignation simultanée de plusieurs valeurs
Un des raccourcis les plus réjouissants existant en
Python est l'utilisation de séquences pour
assigner plusieurs valeurs en une fois.
Exemple 3.19. Assignation simultanée de plusieurs valeurs
>>> v = ('a', 'b', 'e')>>> (x, y, z) = v>>> x'a'>>> y'b'>>> z'e'
v est un tuple de trois éléments et
(x, y, z) est un tuple de trois variables. Le
fait d'assigner l'un à l'autre assigne chacune des valeurs de
v a chacune des variables, dans leur ordre
respectif.
Ce type d'assignation a de multiples usages. Je souhaite souvent
assigner des noms a une série de valeurs. En
C, vous utiliseriez
enum et vous listeriez manuellement chaque constante
et la valeur associée, ce qui semble particulièrement fastidieux lorsque
les valeurs sont consécutives. En Python,
vous pouvez utiliser la fonction prédéfinie range
avec l'assignation multiples de variables pour assigner rapidement des
valeurs consécutives.
La fonction prédéfinie range retourne une
liste d'entiers. Dans sa forme la plus simple, elle prends une
borne supérieure et retourne une séquence démarrant à
0 mais n'incluant pas la borne supérieure.
(Si vous le souhaitez, vous pouvez spécifier une borne inférieure
différente de 0 ou un pas d'incrément
différent de 1. Vous pouvez faire un
print range.__doc__ pour de plus amples
détails.)
MONDAY, TUESDAY,
WEDNESDAY, THURSDAY,
FRIDAY, SATURDAY et
SUNDAY sont les variables que nous définissons
(cet exemple provient du module calendar, qui est un petit module
amusant qui affiche des calendriers comme le programme
cal sous UNIX. Le module
calendar défini des
constantes entières pour les jours de la semaine).
A présent, chaque variable possède sa valeur :
MONDAY vaut 0,
TUESDAY vaut 1 et ainsi de
suite.
Vous pouvez aussi utiliser l'assignation multiple pour créer des
fonctions qui retournent plusieurs valeurs, simplement en retournant un
tuple contenant ces valeurs. L'appelant peut le traiter en tant que
tuple ou assigner les valeurs à différentes variables. Beaucoup de
bibliothèques standard de Python font cela, y
compris le module os dont nous
traiterons au Chapitre 6.