Déballage des éléments☘
Cette méthode consiste à attribuer des étiquettes différentes en une seule affectation.
Affectation multiple☘
Un t-uplet permet d’affecter plusieurs variables en une seule fois :
>>> a, b, c, d = (42, 666, 1789, 1968)
>>> a
42
>>> b
666
>>> c
1789
>>> d
1968
On aurait pu écrire de façon équivalente :
>>> (a, b, c, d) = (42, 666, 1789, 1968)
ou encore:
>>> a, b, c, d = 42, 666, 1789, 1968
Renvoi de t-uplet par une fonction☘
Nous avons déjà vu des exemples de fonctions qui semblent renvoyer « plusieurs variables. Même sans parenthèses « visibles », cette fonction renvoie en fait un t-uplet.
Exemple☘
On considère la fonction suivante :
1 2 |
|
-
On exécute les instructions ci-dessous.
Donnez les valeurs renvoyées par les instructions en lignes 5 et 8.1 2 3 4 5 6 7 8
>>> a, b = 10, 3 >>> quotient, reste = division_euclidienne(a, b) >>> quotient >>> reste
Une solution
On a vraiment l'impression que cette fonction renvoie deux valeurs, la première stockée dans la variable
quotient
et l'autre dans la variablereste
.1 2 3 4 5 6 7 8 9
>>> a, b = 10, 3 >>> quotient, reste = division_euclidienne(a, b) >>> quotient 3 >>> reste 1
-
Anticipez les valeurs renvoyées par l'instruction en ligne 5 :
>>> a, b = 10, 3 >>> resultat = division_euclidienne(a, b) >>> resultat
Une solution
>>> a, b = 10, 3 >>> resultat = division_euclidienne(a, b) >>> resultat (3, 1)
Conséquence
La fonction ne renvoie pas plusieurs valeurs : elle renvoie un tuple, ici le tuple
(a//b, a%b)
.
Python permet de ne pas écrire explicitement les parenthèses dans ce contexte.
A retenir☘
On définit un t-uplet :
>>> t = (3, 4, 5, 6)
-
Si on souhaite manipuler le tuple complet, en tant qu'objet, on lui collera une unique étiquette :
>>> mon_tuple = t
-
Si on souhaite déballer le tuple en récupérant de manière distincte chacun de ses éléments, on affectera autant d'étiquette que d'éléments :
a, b, c, d = t
Pythonnerie
L'affectation multiple permet l'échange de variables en « parallèle » :
>>> a, b = 3, 4
>>> a, b = b, a
>>> a
4
>>> b
3