En Python, *args
et **kwargs
sont des outils puissants pour créer des fonctions flexibles qui permettent aux fonctions d'accepter un nombre variable d'arguments. Ceci est particulièrement utile lorsque vous ne savez pas à l'avance combien d'arguments seront transmis à la fonction.
*args
? *args
permet à une fonction d'accepter n'importe quel nombre d'arguments de position. Ces paramètres sont stockés dans un tuple.
<code class="language-python">def print_numbers(*args): for number in args: print(number) print_numbers(1, 2, 3, 4, 5)</code>
Sortie :
<code>1 2 3 4 5</code>
Ici, vous pouvez transmettre n'importe quel nombre de chiffres et ils seront tous imprimés. Si aucun argument n'est transmis, args
sera simplement un tuple vide.
**kwargs
? **kwargs
permet à une fonction d'accepter n'importe quel nombre d'arguments de mots-clés. Ces paramètres sont stockés dans un dictionnaire, où les clés sont les noms des paramètres et les valeurs sont leurs valeurs correspondantes.
<code class="language-python">def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Alice", age=25, city="New York")</code>
Sortie :
<code>name: Alice age: 25 city: New York</code>
Ici, vous pouvez transmettre n'importe quel nombre de paires clé-valeur. Si aucun argument de mot-clé n'est transmis, kwargs
sera simplement un dictionnaire vide.
*args
et **kwargs
Vous pouvez utiliser à la fois *args
et **kwargs
dans la même fonction. Cela vous permet de gérer à la fois les arguments de position et les arguments de mots clés.
<code class="language-python">def describe_person(*args, **kwargs): print("Attributes:") for arg in args: print(f"- {arg}") print("\nDetails:") for key, value in kwargs.items(): print(f"{key}: {value}") describe_person("Friendly", "Helpful", name="Bob", age=30, city="Boston")</code>
Sortie :
<code>Attributes: - Friendly - Helpful Details: name: Bob age: 30 city: Boston</code>
Ici, *args
collecte les paramètres de position (tels que « Convivial » et « Utile »), et **kwargs
collecte les paramètres de mots-clés (tels que name="Bob" et age=30).
*args
. **kwargs
. *args
**kwargs
<code class="language-python">def add_numbers(*args): total = sum(args) print(f"The sum is: {total}") add_numbers(1, 2, 3, 4) add_numbers(10, 20)</code>
Sortie :
<code>The sum is: 10 The sum is: 30</code>
<code class="language-python">def greet_people(**kwargs): for name, greeting in kwargs.items(): print(f"{greeting}, {name}!") greet_people(Alice="Hello", Bob="Hi", Charlie="Hey")</code>
Sortie :
<code>Hello, Alice! Hi, Bob! Hey, Charlie!</code>
*args
et **kwargs
<code class="language-python">def shopping_list(*items, **prices): print("Items to buy:") for item in items: print(f"- {item}") print("\nPrices:") for item, price in prices.items(): print(f"{item}: ${price}") shopping_list("Apples", "Bananas", Apples=2, Bananas=1.5, Oranges=3)</code>
Sortie :
<code>Items to buy: - Apples - Bananas Prices: Apples: Bananas: .5 Oranges: </code>
En utilisant *args
et **kwargs
vous pouvez rendre vos fonctions Python plus dynamiques et flexibles. Ceci est particulièrement utile lorsque vous travaillez avec des programmes où le nombre d'entrées peut varier. Essayez ces fonctionnalités en commençant par de petits projets et vous les trouverez très pratiques !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!