Maison >développement back-end >Tutoriel Python >Comment * et décompresser les arguments dans les appels de fonction Python ?
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
É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)
Cela équivaut à écrire :
s = add(1, 2)
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)
Cela équivaut à :
s = add(a=1, b=2)
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
Et deux ensembles de valeurs :
values1 = (1, 2) values2 = { 'c': 10, 'd': 15 }
Nous pouvons décompresser ces valeurs comme suit :
s = add(*values1, **values2)
C'est équivalent à :
s = sum(1, 2, c=10, d=15)
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
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!