Retour au blog

Utiliser les paramètres *args et **kwargs dans votre code : un tutoriel Python 3

Utiliser les paramètres *args et **kwargs dans votre code : un tutoriel Python 3

Introduction

Python est l'un des langages de programmation les plus populaires au monde. En Python, les paramètres font partie des définitions de fonctions. Ils vous permettent de spécifier certains arguments pour une fonction. L'argument peut être accepté et appliqué par la fonction.

Cependant, il ne vous est pas possible de savoir au moment du codage quels cas d'utilisation exacts pourraient être implémentés avec votre code. Ainsi, dans l'intérêt des futurs programmeurs et utilisateurs de votre programme, il est conseillé de passer un nombre variable d'arguments à une fonction. Pour ce faire, vous devez utiliser des paramètres spéciaux. Ce sont *args et **kwargs. Dans ce tutoriel, nous allons tout apprendre sur les paramètres *args et **kwargs en Python. Nous apprendrons également comment ordonner les arguments et comment les appliquer dans les appels de fonctions.

Prérequis

Afin de pouvoir suivre les étapes de ce tutoriel, vous devez préparer quelques prérequis. Tout d'abord, vous devez avoir Python 3 installé sur votre serveur avec un environnement de programmation opérationnel. Vous devez également avoir installé le programme correspondant à votre système d'exploitation particulier (Ubuntu, CentOS, Debian, etc.).

Qu'est-ce que *args et comment cela fonctionne-t-il ?

Commençons par comprendre comment *args fonctionne. La version à astérisque unique du paramètre est utilisée pour envoyer des listes d'arguments de longueur variable sans mot-clé aux fonctions. Gardez à l'esprit que l'astérisque est l'élément le plus critique de ce paramètre.

Pour mieux comprendre, prenons un exemple. Voici une fonction typique que vous pourriez trouver dans votre code, utilisant deux arguments :

Comme vous pouvez le voir, nos arguments dans la fonction ci-dessus sont x et y. Lors de l'appel de la fonction, vous utiliserez des nombres correspondant à x et y. Disons que nous passons les entiers 5 et 4 pour x et y respectivement :

Maintenant, nous pouvons exécuter le code :

La sortie que nous recevrons sera la suivante :

La sortie montre que les entiers 5 et 4 ont été multipliés. Cela signifie que la fonction multiply(x, y) a fonctionné.

Now, let’s say we want to eventually multiply three numbers instead of just two. Unfortunately, adding an extra number to the above function will give you an error like this:

Par conséquent, si vous pensez que vous pourriez avoir besoin d'ajouter d'autres arguments plus tard, appliquez le paramètre *args pour votre commodité. Vous pouvez l'utiliser comme ceci :

Nous avons simplement remplacé les x et y paramètres de fonction par *args. L'exécution de ce code vous donnera le produit pour chaque appel de fonction comme ceci :

Ainsi, *args est idéal à utiliser lorsque vous souhaitez envoyer des listes d'arguments de longueur variable à votre fonction. Grâce à sa capacité, vous pouvez passer autant d'arguments que vous le souhaitez aux appels de fonction. Ainsi, ce paramètre vous permet de construire un code plus flexible qui peut accepter une quantité importante d'arguments variables et sans mot-clé dans la fonction.

Qu'est-ce que **kwargs et comment cela fonctionne-t-il ?

Ensuite, nous avons la version à double astérisque des paramètres qui est **kwargs. Contrairement à la forme précédente, ce paramètre vous permet de passer des dictionnaires d'arguments de longueur variable avec mots-clés dans la fonction. Semblable à *args, les doubles astérisques sont l'élément le plus critique du paramètre.

Comme nous l'avons fait dans la section précédente, vous pouvez ajouter autant d'arguments que vous le souhaitez. La différence est que vous devez attribuer des mots-clés. Pour mieux comprendre, considérez l'exemple suivant. Ici, nous allons commencer par afficher les **kwargs arguments que nous voulons passer à la fonction :

Maintenant, appelons la fonction. Comme vous pouvez le voir, nous avons ajouté des arguments de mots-clés :

L'exécution du programme à ce stade vous montrera cette sortie :

Cependant, il est possible que votre type de données dictionnaire ne soit pas ordonné. Cela dépend en grande partie de la version de Python 3 que vous utilisez. Par exemple, toute version ultérieure à Python 3.6 vous donne les paires clé-valeur dans l'ordre. Toute version antérieure affichera la sortie dans un ordre aléatoire. Le dictionnaire que vous créez s'appellera kwargs. Notez que vous pouvez l'utiliser et le manipuler comme n'importe quel autre dictionnaire sur le système. Voyons comment vous pouvez mettre le paramètre **kwargs à profit pour une plus grande utilisation et application.

Dans l'exemple suivant, nous allons essayer de créer une nouvelle fonction qui saluera un dictionnaire contenant des noms. Notre dictionnaire d'exemple aura deux noms :

L'exécution du programme vous donnera cette sortie :

Semblable à l'exemple précédent, les dictionnaires peuvent sembler non ordonnés. Ainsi, l'ordre des noms Casey et Sammy peut être inversé dans certains cas.

Ensuite, nous allons passer des arguments supplémentaires à la fonction. Cela prouvera que vous pouvez faire en sorte que **kwargs accepte n'importe quel nombre d'arguments que vous souhaitez :

L'exécution du programme vous montrera cette sortie :

Cette sortie peut également être non ordonnée. Quoi qu'il en soit, ces exemples montrent que **kwargs offre à votre programme la flexibilité d'utiliser un certain nombre d'arguments de mots-clés.

Comment ordonner les arguments

Il est important de garder à l'esprit l'ordre défini lors de l'ordonnancement d'un argument dans une fonction ou un appel de fonction. Il est le suivant :

  1. Arguments positionnels formels

  2. *args

  3. Arguments de mots-clés

  4. **kwargs

Disons que vous utilisez *args et **kwargs avec des paramètres positionnels explicites. Cela signifie que votre fonction ressemblera à ceci :

D'un autre côté, l'utilisation de ces paramètres avec des paramètres nommés donnera à votre fonction la structure générale suivante :

Le non-respect de l'ordre défini entraînera une erreur de syntaxe lors de l'exécution de votre code. Par conséquent, il est préférable d'éviter de commettre cette erreur dès le départ.

Comment utiliser *args et **kwargs dans les appels de fonctions

Enfin, nous allons vous montrer comment utiliser ces deux paramètres pour passer des arguments à des fonctions. Nous commencerons par un exemple montrant *args:

Il y a trois paramètres dans cette fonction : arg_1, arg_2, et arg_3. Vous devez créer une variable et lui attribuer un itérable. Dans ce cas, il s'agira d'un tuple. Ensuite, vous pouvez passer la variable à la fonction en utilisant la syntaxe de l'astérisque.

Observez la sortie lorsque vous exécutez le programme en utilisant la python some_args.py commande :

Il est également possible de modifier le programme pour utiliser une liste itérable comme type de données avec un nom de variable différent. Le code suivant combine *args avec un paramètre nommé :

La sortie sera la suivante lors de l'exécution du programme :

D'un autre côté, vous pouvez appliquer des arguments nommés avec **kwargs. Veillez à créer une variable égale à un dictionnaire. Elle doit comporter 2 paires clé-valeur. Voici comment nous allons passer la variable à une fonction avec 3 arguments :

Utilisez la python some_kwargs.py commande une fois de plus pour exécuter le programme :

Conclusion

À la fin de ce tutoriel, vous devriez être bien familiarisé avec ce que sont *args et **kwargs et comment ils fonctionnent. Vous pouvez désormais appliquer ces paramètres à votre propre code pour rendre votre programme flexible pour les futurs utilisateurs. Ils sont idéaux pour les situations où vous ne savez pas combien d'arguments peuvent être utilisés. Veillez simplement à faire attention aux éléments critiques des fonctions et des paramètres.

Enfin, voici d'autres ressources de notre blog qui vous aideront à travailler avec succès avec Python :

Bonne programmation !

author

Pranay Kapgate

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.