Les paramètres *args et **kwargs en Python

1. L'argument *args

1.1 problématique

Si on souhaite créer une fonction somme qui permet de sommer les valeurs passés en paramètres le truc est assez simple!

Le programme affiche la somme 5  sans aucun problème ! Mais si on veut varier le nombre de paramètres

Le problème affiche un message d'erreur:
builtins.TypeError: somme() takes 2 positional arguments but 3 were given
cela est du au fait que la fonction accèpte deux et uniquement deux paramètres! Pour palier à ce problème, le langage Python fournit le paramètre *args

1.2 Le paramètre *args

Comme dans l'exemple ci-dessus, nous ne sommes pas sûrs du nombre d'arguments qui peuvent être passés à une fonction. Python nous offre *args qui permet de passer un nombre d'arguments variable.
Dans la fonction, nous devons utiliser un astérisque * avant le nom du paramètre pour passer des arguments de longueur variable. Les arguments sont passés sous forme de tuple et ces arguments passés forment un tuple à l'intérieur de la fonction avec le même nom que le paramètre à l'exclusion de l'astérisque *.

Exemple




2. Le paramètre **kwargs

La syntaxe spéciale **kwargs dans les définitions de fonctions en python est utilisée pour transmettre une liste d'arguments à mots clés de longueur variable. Cela permet ainsi l'usage d'arguments nommés. Nous utilisons le nom kwargs avec la double étoile. La raison en est que la double étoile nous permet de passer par des arguments de mots-clés dont le nombre est variable.
Un argument de mot clé est l'endroit où vous fournissez un nom à la variable lorsque vous la transmettez à la fonction.
On peut considérer les kwargs comme un dictionnaire qui associe chaque mot-clé à la valeur que nous lui transmettons. C'est pourquoi, lorsque nous parcourons les kwargs, il ne semble pas y avoir d'ordre dans lequel ils ont été imprimés.

Exemple1

Ce qui affiche après exécution:
La valeur de a est 3
La valeur de b est 2
La valeur de c est 5

Exemple 2

marque : Renault
couleur : Rouge
annee : 2021




 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply

Your email address will not be published. Required fields are marked *