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
DDDoriginal
2024-12-20 11:08:09697parcourir

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

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

values = (1, 2)
s = add(*values)

Cela équivaut à écrire :

s = add(1, 2)

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

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

values2 = { 'c': 10, 'd': 15 }
s = add(**values2)

Cela équivaut à :

s = sum(a=1, b=2, c=10, d=15)

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)

Cela équivaut à :

s = sum(1, 2, c=10, d=15)

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):
    # ...

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!

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