Comment utiliser *args et **kwargs dans les fonctions Python
Maîtrisez *args et **kwargs en Python. Apprenez à écrire des fonctions flexibles avec des arguments de position et de mot-clé dynamiques, à décompresser des collections et à créer des fonctions wrapper.
Aperçu
En Python, vous devrez souvent concevoir des fonctions pouvant accepter un nombre variable d’arguments. Par exemple, une fonction qui calcule la somme d'un nombre quelconque d'entiers ou une fonction qui enregistre des métadonnées avec des champs variables. Au lieu de forcer les utilisateurs à transmettre une liste ou un dictionnaire, Python fournit deux symboles spéciaux : `*args` et `**kwargs`.
La syntaxe `*args` permet à une fonction d'accepter n'importe quel nombre d'arguments de position. L'astérisque unique « * » agit comme un opérateur de décompression. Lorsqu'il est placé dans une définition de fonction, il collecte des arguments de position supplémentaires dans un tuple nommé « args ». Cela vous permet de parcourir les valeurs d'entrée, d'exécuter des calculs ou de les transmettre facilement à une autre fonction.
La syntaxe `**kwargs`, quant à elle, permet à une fonction d'accepter n'importe quel nombre d'arguments mot-clé (nommés). Le double astérisque `**` rassemble ces arguments dans un dictionnaire nommé `kwargs`. Ceci est incroyablement utile pour transmettre des configurations facultatives, des arguments de style ou des attributs de base de données. N'oubliez pas que les noms « args » et « kwargs » sont des conventions ; la fonctionnalité réelle est déterminée par les astérisques simples et doubles.
Sortie de code et d'exécution
Ce code montre l'utilisation de *args pour additionner les nombres variables, **kwargs pour imprimer les profils utilisateur et la combinaison des deux dans une seule fonction.
def sum_all(*args):
print("args type:", type(args).__name__)
return sum(args)
print("Sum (1, 2, 3):", sum_all(1, 2, 3))
print("Sum (10, 20):", sum_all(10, 20))
def print_profile(**kwargs):
print("kwargs type:", type(kwargs).__name__)
for key, value in kwargs.items():
print(f"{key}: {value}")
print_profile(name="Bob", role="developer", country="US")
def master_function(first, *args, **kwargs):
print(f"First argument: {first}")
print(f"Additional positional args: {args}")
print(f"Keyword args: {kwargs}")
master_function("hello", 1, 2, 3, debug=True, user_id=42)args type: tuple
Sum (1, 2, 3): 6
args type: tuple
Sum (10, 20): 30
kwargs type: dict
name: Bob
role: developer
country: US
First argument: hello
Additional positional args: (1, 2, 3)
Keyword args: {'debug': True, 'user_id': 42}Mise en œuvre étape par étape
- Utilisez un seul astérisque avant un paramètre (par exemple, *args) pour rassembler les arguments de position dans un tuple.
- Utilisez un double astérisque avant un paramètre (par exemple, **kwargs) pour rassembler les arguments de mots-clés dans un dictionnaire.
- Conservez l'ordre correct des paramètres : paramètres standard, *args, paramètres de mots clés uniquement, puis **kwargs.
- Utilisez la syntaxe de déballage lors de l'appel de fonctions en passant *iterable ou **dictionary.
Foire aux questions
Dois-je utiliser les noms « args » et « kwargs » ?
Non, ce sont des conventions communautaires standards. Seuls les préfixes * et ** sont syntaxiquement requis. Vous pouvez écrire *values et **options, mais il est fortement recommandé de s'en tenir à *args et **kwargs pour des raisons de lisibilité.
Quel est l’ordre correct lors de la définition d’une fonction ?
L'ordre correct des arguments dans une signature de fonction est le suivant : arguments de position, *args, arguments de mots-clés uniquement et enfin **kwargs.
Sujets connexes
Apprenez à créer une classe en Python. Maîtrisez le constructeur __init__, les méthodes d'instance, le mot-clé self et l'instanciation d'objet.
Comment utiliser les fonctions Lambda en PythonApprenez à utiliser les fonctions lambda en Python. Maîtrisez les fonctions anonymes, les rappels en ligne et le tri des données de liste avec des clés lambda.
Ressources Python recommandées
Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.
Boucles Python
Apprenez à utiliser les boucles Python pour parcourir les données. Maîtrisez les bonnes pratiques pour les boucles, while, break, continue et loop avec des exemples interactifs.
Aide-mémoire sur les méthodes de chaîne Python
Un guide de référence complet pour la manipulation des chaînes Python. Maîtrisez le formatage, la recherche, le fractionnement, le remplacement et la vérification des propriétés des chaînes.
Python vs JavaScript : quel langage de programmation est le meilleur ?
Une comparaison complète entre Python et JavaScript. Explorez les différences de syntaxe, les performances, les cas d'utilisation (backend et frontend) et des exemples de codage.