Maison >développement back-end >Tutoriel Python >Comment les opérateurs étoile simple et double (*) et () gèrent-ils les arguments variables dans les définitions de fonctions Python ?
Déballage des paramètres : et dans les définitions de fonctions*
Les définitions de fonctions en Python peuvent exploiter le (étoile ) et * (double étoile) pour gérer un nombre varié de arguments.
Opérateur Single Star (*)
L'opérateur (également connu sous le nom de "var-args" ou "splat") collecte tous les arguments de position transmis à la fonction dans un tuple appelé args. Par exemple, dans la définition ci-dessous :
def foo(x, y, *args): pass
Si args est invoqué avec foo(1, 2, 3, 4, 5), le tuple args contiendra (3, 4, 5).
Opérateur double étoile ()**
L'opérateur (également connu sous le nom de « var-kwargs » ou « keyword splat ») capture tous les arguments de mots-clés sous la forme d'un dictionnaire nommé kwargs**. Dans la définition suivante :
def bar(x, y, **kwargs): pass
Lorsque bar est invoqué avec bar(1, 2, name='Alice', age=30), les kwargus le dictionnaire contiendra {'name' : 'Alice', 'age' : 30}.
Mélange d'arguments standards et variables
Les définitions de fonctions peuvent combiner des arguments normaux avec des arguments variables en utilisant *:
def foo(kind, *args, bar=None, **kwargs): pass
Lorsqu'elle est invoquée avec foo(123, 'a', 'b', apple='red'), les variables 'kind', 'args', 'bar' et 'kwargs' contiendront :
Déballage des listes d'arguments
* : peut également être utilisé pour décompresser listes d'arguments lors de l'appel de fonctions :
def foo(bar, lee): pass baz = [1, 2] foo(*baz) # Unpacks baz into [1, 2] for bar and lee
Déballage itérable étendu (Python 3)
Dans Python 3, *l peut être utilisé sur le côté gauche d'une affectation pour décompresser les itérables en plusieurs variables :
first, *rest = [1, 2, 3, 4] # first = 1, rest = [2, 3, 4]
Mot clé- Seuls les arguments (Python 3)
Python 3 présente Arguments de mots-clés uniquement, où après * : seuls les arguments de mots-clés sont autorisés :
def func(arg1, arg2, arg3, *, kwarg1, kwarg2): pass
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!