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

source:php.cn
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