Maison >développement back-end >Tutoriel Python >Comment fonctionnent *args et kwargs dans les définitions et les appels de fonctions Python ?

Comment fonctionnent *args et kwargs dans les définitions et les appels de fonctions Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 05:17:12795parcourir

How do *args and kwargs Work in Python Function Definitions and Calls?

* et Paramètres dans les fonctions Python

En Python, le * (double étoile/astérisque) et (étoile /astérisque) dans les définitions de fonctions et les appels jouent un rôle crucial dans la gestion des variables arguments.

**kwargs

La syntaxe

def foo(x, y, **kwargs):
    pass

indique que la fonction foo peut accepter un nombre arbitraire d'arguments de mots-clés. Ces arguments de mots-clés sont regroupés dans un dictionnaire nommé kwargs. Par exemple :

def bar(**kwargs):
    for a in kwargs:
        print(a, kwargs[a])

# Call the function
bar(name='one', age=27)
# Output:
# name one
# age 27

*args

De même, la syntaxe

def foo(x, y, *args):
    pass

permet à la fonction foo d'accepter un nombre arbitraire d'arguments de position. Ces arguments sont rassemblés dans un tuple nommé args.

def foo(*args):
    for a in args:
        print(a)

# Call the function
foo(1)
# Output: 1

foo(1, 2, 3)
# Output: 1
# Output: 2
# Output: 3

et * Combinaison

Les deux *kwargs et args peuvent être utilisés ensemble pour autoriser les arguments fixes et variables. Par exemple :

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)

# Call the function
foo(123, 'a', 'b', apple='red')
# Output: 123 ('a', 'b') None {'apple': 'red'}

Déballage itérable étendu

La notation * peut également être utilisée pour décompresser les listes d'arguments lors de l'appel de fonctions. Par exemple :

def foo(bar, lee):
    print(bar, lee)

# Create a list
baz = [1, 2]

# Call the function using unpacking
foo(*baz)
# Output: 1 2

Remarque : Paramètres de position uniquement (Python 3.8)

Dans Python 3.8 et versions ultérieures, il est possible de spécifier des paramètres de position uniquement dans une définition de fonction en utilisant le * notation avant les paramètres réguliers :

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

Cette fonction ne peut accepter que trois arguments de position, et tout argument supplémentaire doit être passé comme arguments de mots-clés.

Ordre d'insertion pour kwargs

Dans Python 3.6 et versions ultérieures, l'ordre des arguments de mots-clés est conservé dans le dictionnaire kwargs. Cela peut être utile dans certains scénarios, par exemple lorsque vous devez conserver l'ordre des arguments transmis à la fonction.

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