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 ?

Comment les opérateurs étoile simple et double (*) et () gèrent-ils les arguments variables dans les définitions de fonctions Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-24 16:57:10783parcourir

How Do Single and Double Star Operators (*) and () Handle Variable Arguments in Python Function Definitions?

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 :

  • kind = 123
  • args = ('a ', 'b')
  • barre = Aucun
  • kwargs = {'apple': 'red'>

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!

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