Aller au contenu

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
def division_euclidienne(a, b):
    return a//b, a%b
  1. 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 variable reste.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> a, b = 10, 3
    
    >>> quotient, reste = division_euclidienne(a, b)
    
    >>> quotient
    3
    
    >>> reste 
    1
    

  2. 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