PaliSkill
Python avancé

Leçon 9 / 10 — Chapitre 4: Décorateurs

Unpacking à l'appel : *liste et **dict

Python Intermédiaire a montré *args/**kwargs pour définir une fonction acceptant un nombre variable d'arguments. À l'appel, * et ** font l'inverse : ils déballent une liste ou un dictionnaire existant en arguments séparés.

def additionner(a, b, c):
    return a + b + c

valeurs = [1, 2, 3]
print(additionner(*valeurs))

Ce code affiche 6 : *valeurs déballe la liste [1, 2, 3] en trois arguments positionnels séparés, exactement comme si on avait écrit additionner(1, 2, 3) directement — sans le *, additionner(valeurs) échouerait, car additionner attend trois arguments séparés, pas une seule liste.

** fait de même avec un dictionnaire, en le déballant en arguments nommés :

infos = {"a": 1, "b": 2, "c": 3}
print(additionner(**infos))

Ce code affiche aussi 6 : **infos déballe le dictionnaire en a=1, b=2, c=3, chaque clé devenant un nom d'argument — les clés du dictionnaire doivent correspondre exactement aux noms des paramètres attendus par la fonction.

C'est précisément ce mécanisme qu'utilise l'enveloppe d'un décorateur (fonction(*args, **kwargs), vue dans ce chapitre) pour retransmettre les arguments reçus à la fonction d'origine.

À vous de jouer : avec une fonction à trois paramètres, appelez-la une fois en déballant une liste avec *, et une fois en déballant un dictionnaire avec **.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 87 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès