Maison > développement back-end > Tutoriel Python > Quelle est la différence entre « *args » et « kwargs » dans les paramètres de fonction Python ?

Quelle est la différence entre « *args » et « kwargs » dans les paramètres de fonction Python ?

Barbara Streisand
Libérer: 2024-12-29 03:18:18
original
206 Les gens l'ont consulté

What's the Difference Between `*args` and `kwargs` in Python Function Parameters?

Dévoilement de la signification de (double étoile) et (étoile) dans les paramètres de fonction*

En Python, fonction les paramètres désignés par args et *kwargs servent de mécanismes polyvalents pour s'adapter à des arguments.

Déballage des arguments de position avec *args

Le paramètre *args rassemble tous les arguments de position qui dépassent ceux prédéfinis dans un tuple. Par exemple :

def foo(*args):
    for arg in args:
        print(arg)
Copier après la connexion

Cette fonction peut accepter un nombre arbitraire d'arguments de position, tels que :

foo(1)  # Output: 1
foo(1, 2, 3)  # Output: 1 2 3
Copier après la connexion

Assembler des arguments de mots-clés avec kwargs**

D'un autre côté, **kwargs collecte tous les arguments de mots-clés dans un dictionnaire.

def bar(**kwargs):
    for key, value in kwargs.items():
        print(key, value)
Copier après la connexion

L'appel de cette fonction avec des arguments de mots-clés donne :

bar(name='John', age=30)  # Output: name John, age 30
Copier après la connexion

Interaction de args et kwargs*

Les deux idiomes peuvent être combinés pour permettre un mélange de fixe et de variable arguments :

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)
Copier après la connexion

Cette fonction peut être appelée comme suit :

foo(123, 'a', 'b', apple='red')  # Output: 123 ('a', 'b') None {'apple': 'red'}
Copier après la connexion

Cas d'utilisation supplémentaires

  • Déballage Listes d'arguments : L'idiome * peut être utilisé pour décompresser les listes d'arguments lors de l'appel d'un function:
def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]
foo(*baz)  # Output: 1 2
Copier après la connexion
  • Déballage itérable étendu (Python 3 ): * peut être utilisé sur le côté gauche d'une mission pour obtenir une liste :
first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
Copier après la connexion
  • Arguments de mots clés uniquement (Python 3 ): Les fonctions peuvent restreindre les arguments de mots-clés en utilisant la syntaxe suivante :
def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
Copier après la connexion

Cette fonction nécessite trois arguments de position et un nombre quelconque d'arguments de mots-clés après *.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal