Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
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' (**) :
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 :
def foo(**nombres):
print(nombres)
Exemplesformat_paragraph
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.