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
Libérer: 2024-12-26 05:17:12
original
864 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

*args

De même, la syntaxe

def foo(x, y, *args):
    pass
Copier après la connexion

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
Copier après la connexion

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'}
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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