Maison >développement back-end >Tutoriel Python >Comment les *args et kwargs de Python gèrent-ils les paramètres de fonction ?

Comment les *args et kwargs de Python gèrent-ils les paramètres de fonction ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 15:41:11808parcourir

How Does Python's *args and kwargs Handle Function Parameters?

Déballage des paramètres avec et dans les fonctions Python*

Dans les fonctions Python, les et * La syntaxe permet une plus grande flexibilité dans la gestion des paramètres.

Positionnel Déballage des arguments (kwargs)

Le paramètre *args collecte tous les arguments de position sous forme de tuple. Par exemple :

def foo(x, y, *args):
    for a in args:
        print(a)

L'appel de foo(1, 2, 3) imprime :

1
2
3

Déballage des arguments de mots clés (kwargs)

Le paramètre **kwargs collecte tous les arguments de mots-clés sous forme de dictionnaire. Par exemple :

def bar(x, y, **kwargs):
    for k, v in kwargs.items():
        print(k, v)

Barre d'appel (x=1, y=2, name='John') imprime :

name John

Déballage combiné

Les deux idiomes peuvent être combinés pour permettre un mélange d'arguments fixes et variables. Par exemple :

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

Appeler foo(123, 'a', 'b', apple='red') imprime :

123 ('a', 'b') None {'apple': 'red'}

À l'inverse, kwargs peut être utilisé pour décompresser les arguments de mots-clés dans les appels de fonction. Par exemple :

def foo(a, b, c):
    print(a, b, c)

obj = {'b':10, 'c':'lee'}

foo(100, **obj) # Prints 100 10 lee

Déballage de listes et de tuples avec *

La syntaxe * peut également être utilisée pour décompresser des listes et des tuples lors de l'appel de fonctions. Par exemple :

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

baz = [1, 2]

foo(*baz) # Prints 1 2

Déballage itérable étendu

Dans Python 3, * peut être utilisé sur le côté gauche d'une affectation pour décompresser les itérables en variables individuelles. Par exemple :

first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]

Arguments de position uniquement

Python 3 a également introduit des arguments de position uniquement. Les fonctions peuvent spécifier que seuls certains arguments peuvent être positionnels. Par exemple :

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

Cette fonction n'accepte que 3 arguments de position. Tous les arguments après * doivent être transmis comme arguments de mot-clé.

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