Maison > développement back-end > Tutoriel Python > Comment * et décompresser les arguments dans les appels de fonction Python ?

Comment * et décompresser les arguments dans les appels de fonction Python ?

DDD
Libérer: 2024-12-22 09:01:13
original
412 Les gens l'ont consulté

How Do * and  Unpack Arguments in Python Function Calls?

Déballage des arguments avec et dans les appels de fonction Python*

Dans les appels de fonction Python, l'astérisque ( ) et les opérateurs double astérisque (*) jouent un rôle important dans le décompression des séquences et des dictionnaires en position ou en nom. arguments, respectivement.

Étoile unique (*) Déballage :

L'opérateur astérisque unique (*) décompresse une séquence ou une collection en arguments de position. Considérons la fonction suivante :

def add(a, b):
    return a + b
Copier après la connexion

Étant donné un tuple de valeurs valeurs = (1, 2), nous pouvons décompresser le tuple et transmettre ses éléments à la fonction add à l'aide de l'opérateur * :

s = add(*values)
Copier après la connexion

Cela équivaut à écrire :

s = add(1, 2)
Copier après la connexion

Double Étoile () Déballage :**

L'opérateur double astérisque (**) suit un principe similaire mais fonctionne sur des dictionnaires. Il décompresse les paires clé-valeur d'un dictionnaire en arguments nommés :

values = { 'a': 1, 'b': 2 }
s = add(**values)
Copier après la connexion

Cela équivaut à :

s = add(a=1, b=2)
Copier après la connexion

Déballage combiné :

Les deux opérateurs peuvent être utilisés simultanément dans un seul appel de fonction. Par exemple, étant donné la fonction :

def sum(a, b, c, d):
    return a + b + c + d
Copier après la connexion

Et deux ensembles de valeurs :

values1 = (1, 2)
values2 = { 'c': 10, 'd': 15 }
Copier après la connexion

Nous pouvons décompresser ces valeurs comme suit :

s = add(*values1, **values2)
Copier après la connexion

C'est équivalent à :

s = sum(1, 2, c=10, d=15)
Copier après la connexion

Performance Implications :

L'utilisation des opérateurs de décompression et * a généralement des implications minimes sur les performances. Cependant, si la séquence ou le dictionnaire en cours de décompression est volumineux, une surcharge supplémentaire peut survenir lors du processus de décompression. Ceci est négligeable pour la plupart des scénarios pratiques.

Méthode équivalente :

Au lieu d'utiliser les opérateurs de déballage, vous pouvez également utiliser la syntaxe *args et **kwargs , respectivement :

def add(*args, **kwargs):
    s = 0
    for arg in args:
        s += arg
    for key, value in kwargs.items():
        s += value
Copier après la connexion

En fin de compte, le choix entre recourir aux opérateurs de déballage ou *args/**kwargs dépend de votre style de code et de vos préférences.

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