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
Libérer: 2024-12-24 16:57:10
original
896 Les gens l'ont consulté

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

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

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

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

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

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

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal