Comment utiliser les kwargs en Python ? - Docstring

Comment utiliser les kwargs en Python ?

Le paramètre kwargs permet de créer une fonction qui accepte un nombre indéfini d'arguments nommés.

Dans la définition d'une fonction, il doit être précédé d'un double opérateur 'splat' (**) :

#norun
def foo(**kwargs):
    print(kwargs)

La fonction foo accepte ainsi 0, 1 ou un nombre infini d'arguments nommés, par exemple :

def foo(**kwargs):
    print(kwargs)

foo()
foo(a=1)
foo(a=1, mot='Bonjour', boolean=True)

À l'intérieur de la fonction, les arguments envoyés au paramètre kwargs seront récupérés sous la forme d'un dictionnaire :

def foo(**kwargs):
    print(kwargs)
    print(isinstance(kwargs, dict))

foo(a=1, b=2, c=3)

Il est important de noter que le nom de kwargs n'est qu'une convention. On pourrait utiliser n'importe quel nom et cela fonctionnerait de la même façon.

👉 La seule chose qui compte vraiment, c'est le double opérateur splat qui précède le nom du paramètre :

#norun
def foo(**nombres):
    print(nombres)

Exemples

Créer un utilisateur avec différents attributs

class User:
    def __init__(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)

utilisateur = User(prenom="Patrick", nom="Smith", age=30)
print(utilisateur.prenom, utilisateur.nom, utilisateur.age)

utilisateur2 = User(prenom="Luigi", age=25, nationalite="Italien")
print(utilisateur2.prenom, utilisateur2.age, utilisateur2.nationalite)

☝️ ici on utilise **kwargs dans la méthode __init__ d'une classe (pour définir les attributs on utilise la fonction setattr).

Additionner deux nombres

def add(**kwargs):
    """Fonction qui permet d'additionner deux nombres"""
    if len(kwargs.items()) != 2:
        return "Vous ne pouvez additionner que deux nombres."

    result = sum(kwargs.values())

    first_number, second_number = list(kwargs)[0], list(kwargs)[1]
    return "L'addition de {} avec {} est égale à {}.".format(first_number, second_number, result)


print(add(x=4, y=10))
print(add(a=2, b=5))
print(add(patrick=25, john=30))
print(add(a=2, b=5, c=4))

☝️ ici on utilise **kwargs pour ajouter deux nombres ensemble.

L'avantage c'est que nous pouvons nommer les paramètres comme bon nous semble.

Plutôt que de forcer l'utilisation de a et b, nous pouvons nommer les paramètres x et y ou nombre1 et nombre2 par exemple.

Réservé aux membres abonnés

Inscris-toi

Pour pouvoir prendre des notes et ajouter des favoris tu dois être abonné à Docstring.

Voir les formules

Mes notes

Sauvegardé

Passages surlignés

Besoin d'aide ?

Essaie d'être le plus exhaustif possible en donnant suffisamment de détails pour qu'on puisse te répondre du premier coup 😉

Tu peux également visionner cette vidéo dans laquelle je t'explique comment poser ta question correctement et utiliser l'éditeur.

Tu souhaites nous remonter un bug ? Utilise-plutôt ce formulaire.

Cette fonctionnalité est réservée aux membres de la formule accompagnement de Docstring.

Aucun résultat.

Un problème sur le site ?

Aide-nous à améliorer Docstring en nous signalant un problème que tu as rencontré.

Que ce soit un bug sur une fonctionnalité ou une erreur dans une formation, on va pouvoir le corriger rapidement 😉

Page concernée

M'avertir par e-mail

Je veux être averti par e-mail lorsque ce bug est corrigé.