Prenons pour exemple la fonction toute simple ci-dessous.
Le language python nous permet de faire appel à elle de trois manières différentes.
Petit rappel (*args, **kwargs)
Définition :
*
suivi d’une liste permet de définir les valeurs à passer à la fonction**
suivi d’un dictionnaire permet de définir la valeur par argument à passer à la fonction.
Oui mais
Il n’est pas possible de définir deux fois la valeur pour un argument. Par exemple, l’appel suivant génèrera une exception TypeError
.
Il faut également que tous les arguments aient une valeur. Les appels suivants génèreront aussi une exception TypeError
Valeur par défaut
Il est tout à fait possible de définir une valeur par défaut pour un argument si cette dernière n’est pas passée lors de l’appel.
Inspection
Après cette “courte” introduction, nous voici enfin sur le sujet du post.
Je possède une list et/ou un dictionnaire d’argument à passer à une fonction et j’aimerai :
- Savoir quels sont les arguments qui manqueront lors de l’appel
- Savoir quels sont les arguments founis à double qui feront échouer l’appel
J’ai du crééer cette fonction car je devais savoir quels arguments je devais injecter dynamiquement.
La fonction ci-dessus retourne un tuple contenant deux listes:
- missed: La liste des arguments manquants
- multiple: La liste des arguments doublons