Maison > développement back-end > Tutoriel Python > Comment les astérisques simples et doubles (*) décompactent-ils les arguments dans les fonctions Python ?

Comment les astérisques simples et doubles (*) décompactent-ils les arguments dans les fonctions Python ?

DDD
Libérer: 2024-12-20 11:08:09
original
649 Les gens l'ont consulté

How Do Single and Double Asterisks (*) Unpack Arguments in Python Functions?

Déballage des arguments en Python avec et (Double étoile/astérisque)*

En Python, le et les opérateurs * jouent un rôle crucial dans la décompression des arguments lors de l'appel fonctions.

Étoile unique * :
L'étoile unique (*) décompresse une séquence ou une collection en arguments de position. Par exemple, considérons la fonction :

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

Le code ci-dessous utilise * pour décompresser les valeurs du tuple :

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

Cela équivaut à écrire :

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

Double étoile ** :
La double étoile (**) effectue une opération similaire pour les dictionnaires, fournissant des valeurs pour les arguments nommés. Considérons la fonction :

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

Décompresser les valeurs du dictionnaire2 à l'aide de ** donne ce qui suit :

values2 = { 'c': 10, 'd': 15 }
s = add(**values2)
Copier après la connexion

Cela équivaut à :

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

Combinaison de et  :*
Les deux et * peut être utilisé simultanément dans le même appel de fonction. Par exemple :

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

Cela équivaut à :

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

Déballage des paramètres :
En plus du déballage des arguments, et * peut également être utilisé pour le décompression des paramètres dans les définitions de fonctions.

  • Un paramètre marqué avec * reçoit n'importe quel nombre d'arguments de position sous forme de tuple.
  • Un paramètre marqué de ** reçoit tous les arguments de mots-clés sous forme de dictionnaire.

Par exemple :

def add(*values):
    # ...

def get_a(**values):
    # ...
Copier après la connexion

Implications sur les performances :
Les implications sur les performances de l'utilisation de et * sont généralement minime. L'opération de déballage implique une surcharge minimale et n'affecte pas l'efficacité de la fonction elle-même. Cependant, un déballage excessif peut rendre le code moins lisible et moins maintenable.

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