Python Language Utiliser ** kwargs pour écrire des fonctions


Exemple

Vous pouvez définir une fonction qui prend un nombre arbitraire d'arguments par mot-clé en utilisant l'étoile double ** avant un nom de paramètre:

def print_kwargs(**kwargs):
    print(kwargs)

Lors de l'appel de la méthode, Python va construire un dictionnaire de tous les arguments de mots clés et le rendre disponible dans le corps de la fonction:

print_kwargs(a="two", b=3)
# prints: "{a: "two", b=3}"

Notez que le paramètre ** kwargs dans la définition de la fonction doit toujours être le dernier paramètre, et qu'il ne correspondra qu'aux arguments transmis après les précédents.

def example(a, **kw):
    print kw

example(a=2, b=3, c=4) # => {'b': 3, 'c': 4}

À l'intérieur du corps de la fonction, kwargs est manipulé de la même manière qu'un dictionnaire; pour accéder à des éléments individuels dans kwargs vous suffit de les parcourir comme vous le feriez avec un dictionnaire normal:

def print_kwargs(**kwargs):
    for key in kwargs:
        print("key = {0}, value = {1}".format(key, kwargs[key])) 

Maintenant, appeler print_kwargs(a="two", b=1) affiche la sortie suivante:

print_kwargs(a = "two", b = 1)
key = a, value = "two"
key = b, value = 1