Maison >développement back-end >Tutoriel Python >Comprendre *args et **kwargs en Python

Comprendre *args et **kwargs en Python

Susan Sarandon
Susan Sarandonoriginal
2025-01-16 22:16:13551parcourir

Understanding *args and **kwargs in Python

La merveilleuse utilisation de *args et **kwargs en Python : le secret des fonctions flexibles

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.


Qu'est-ce que *args ?

*args permet à une fonction d'accepter n'importe quel nombre d'arguments de position. Ces paramètres sont stockés dans un tuple.

Exemple :

<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.


Qu'est-ce que **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.

Exemple :

<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.


Utiliser en combinaison *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.

Exemple :

<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).


Règles de mémoire simples

  1. Utilisez lorsque vous devez transmettre un nombre variable d'arguments de position*args.
  2. Utilisez lorsque vous devez transmettre un nombre variable de arguments de mots clés**kwargs.
  3. L'ordre dans une signature de fonction doit toujours être :
    • Paramètres généraux de position
    • *args
    • Paramètres de mots clés par défaut
    • **kwargs

Exemples pratiques pour débutants

Exemple 1 : Une fonction pour ajouter des nombres

<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>

Exemple 2 : Saluer les gens par leur nom

<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>

Exemple 3 : Combiner *args et **kwargs

dans une liste de courses
<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>

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn