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!