Non, ce ne sont pas des personnages de Star Wars ;-)
Comme leurs noms l'indiquent args (pour arguments ) et kwargs (keyword arguments) sont des arguments, donc des valeurs fournies à une fonction pour qu'elle donne un résultat.
Nous avons vu, jusque là, des fonctions où le nombre d'arguments est connu à l'avance. Par exemple :
def somme(nombre1,nombre2):
return nombre1 + nombre2
La fonction somme prend deux arguments et renvoie la somme des deux.
Mais, dans certains cas, le nombre d'arguments passés à la fonction n'est pas connu : reprenons la fonction somme en imaginant que l'utilisateur ne saura pas de combien de nombres il veut faire la somme...
Comment faire ?
def somme(*args):
result = 0
for arg in args:
result += arg
return result
print(somme(1,2,3)) # affiche 6
print(somme(1,2,3,4,5,6)) # affiche 21
Comprendre le programme :
Comme pour *args, **kwargs permet de passer un nombre indéterminé d'arguments à une fonction.
Mais, cette fois, sous la forme d'un dictionnaire et non pas d'un tuple.
def somme(**kwargs):
resultat = 0
liste_clefs = []
for clef,valeur in kwargs.items(): # kwargs est un dictionnaire
liste_clefs.append(clef) # fait la liste des clefs du dictionnaire
resultat += valeur # fait la somme des valeurs du dictionnaire
return resultat,liste_clefs
print(somme(a=1,b=2,c=3)) # affiche (6, ['a', 'b', 'c'])
print(somme(a=1,b=2,c=3,d=4,e=5,f=6)) # affiche (21, ['a', 'b', 'c', 'd', 'e', 'f'])
Comprendre le programme :