Il existe trois types d'arguments qu'une fonction Python peut accepter: standard, variable (*args) et mot-clé (**kwargs). Les arguments standard sont les plus simples mais ont des fonctionnalités limitées. En revanche, *args et **kwargs permettent d'assouplir vos fonctions, en acceptant un nombre variable d'entrées.
Le type de passage d'arguments que vous choisissez dépend de la nature de votre fonction et de votre propre style de programmation préféré.
Fonctions de base en Python
Pour comprendre comment fonctionnent les deux arguments variables dans les fonctions Python, il est essentiel de comprendre pourquoi ils existent en premier lieu. Une fonction simple déclare un nombre fixe d'arguments anonymes comme suit :
définitivementaddnum(a, b, c):
revenir un + b + c
Cette fonction fonctionne bien, mais il y a place à amélioration. Le plus gros problème est qu'il ne gère que deux arguments, il ne peut donc additionner que deux nombres. Et si vous voulez ajouter deux ou quatre nombres? Cette fonction ne vous permettra pas de le faire. Passer plus ou moins d'arguments que la fonction n'en accepte conduira à une TypeError.
Bien sûr, vous pouvez créer plus de fonctions pour accepter différents nombres d'arguments. Mais ce n'est pas pratique et n'évoluera pas bien du tout. Vous devrez également créer une nouvelle fonction chaque fois que vous souhaitez gérer un nouveau nombre d'entrées.
C'est là qu'interviennent les arguments variables et les arguments mot-clé. En utilisant *args et **kwargs, vous pouvez définir des fonctions flexibles qui peuvent prendre un nombre variable d'entrées.
Qu'est-ce que *args en Python ?
L'idée principale derrière *args en Python est de vous permettre de passer un nombre variable d'entrées à votre fonction. Cela est pratique dans diverses applications. Par exemple, pensez à un programme de calculatrice dans lequel vous souhaitez donner à l'utilisateur la possibilité d'additionner deux nombres ou plus et de renvoyer la somme.
Notez que args n'est qu'un nom de variable; c'est le * qui est important. Vous pouvez utiliser n'importe quel nom valide pour votre argument de variable, tant que vous incluez le *.
Comment utiliser *args
Vous pouvez modifier la fonction addnum pour prendre un nombre variable d'entrées comme suit :
définitivementaddnum(*arguments):
somme = 0pour nombre dans arguments :
total = total + nombre
revenir total
L'extrait de code ci-dessus utilise une boucle for pour parcourir les entrées fournies.
Vous pouvez ensuite appeler la fonction addnum avec des arguments variables et cela fonctionnera sans générer d'erreur :
imprimer(addnum(10, 1, 12, 12, 4, 54, 5)) ## renvoie 98
imprimer(addnum(14, 54, 5)) # renvoie 73
imprimer(addnum(10, 5)) # renvoie 15
Qu'est-ce que **kwargs en Python ?
Alors que *args et **kwargs nous permettent de passer un nombre variable d'entrées aux fonctions, cette dernière est spécifique aux arguments de mots-clés. Au cas où vous ne le sauriez pas, les arguments de mots clés ne sont que des noms fantaisistes pour les arguments avec un nom.
Une autre chose unique à propos de **kwargs est que Python représente la valeur sous forme de dictionnaire.
Comment utiliser **kwargs
Comme *args, le double astérisque est le bit important; vous pouvez utiliser n'importe quel mot comme nom de paramètre. Voici un exemple d'utilisation de **kwargs en Python :
définitivementprésence_hebdomadaire(**jours de la semaine):
total_attendees = 0pourparticipantsdansjours de la semaine.valeurs():
total_attendees = total_attendees + participantsrevenir total_attendees
imprimer(présence_hebdomadaire (lundi = 265, mardi = 698, mercredi = 365, jeudi = 463, vendredi = 234)) # renvoie 2025
imprimer(présence_hebdomadaire (lundi = 265, vendredi = 234)) # renvoie 499
imprimer(présence_hebdomadaire (mercredi = 365, jeudi = 463, vendredi = 234)) # renvoie 1062
L'extrait de code ci-dessus utilise également une boucle for, mais cette fois avec la méthode intégrée values() de Python. Cette méthode renvoie un objet de vue de toutes les valeurs du dictionnaire. La méthode values() permet de boucle dans un dictionnaire Python sans tracas.
Utilisez des arguments variables pour rendre vos fonctions Python flexibles
Les arguments de fonction sont pratiques, mais certaines fonctions peuvent bénéficier de l'acceptation d'un nombre variable d'arguments. Les arguments de mots clés nommés peuvent rendre votre code plus lisible et plus facile à utiliser. Vous devriez adopter les arguments *args et **kwargs de Python. Ils sont assez simples à utiliser, et avec eux, vous pouvez rendre vos fonctions et vos programmes plus flexibles.
En suivant les étapes et les extraits de code ci-dessus, nous espérons que vous pourrez désormais utiliser des mots-clés variables et des arguments sans mot-clé pour vos fonctions.