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
Libérer: 2024-12-22 15:41:11
original
774 Les gens l'ont consulté

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

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

1
2
3
Copier après la connexion

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

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

name John
Copier après la connexion

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

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

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

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

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

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

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

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!

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