Maison  >  Article  >  développement back-end  >  Quelles sont les utilisations des paramètres ** et * en Python ?

Quelles sont les utilisations des paramètres ** et * en Python ?

silencement
silencementoriginal
2019-05-23 14:52:474903parcourir

En Python, le paramètre "**" indique qu'un nombre quelconque de paramètres de mots-clés sont acceptés ici. Ces paramètres sont enregistrés sous la forme d'un dictionnaire, qui sera interprété comme un dictionnaire ; indique qu'un nombre illimité de paramètres de mots-clés sont acceptés ici. Plusieurs paramètres non-mots-clés, ces paramètres seront enregistrés sous la forme d'un tableau, c'est-à-dire qu'ils seront interprétés comme un tuple.

Quelles sont les utilisations des paramètres ** et * en Python ?

Le mécanisme de transmission de paramètres de Python comporte la transmission de valeurs (types de données de valeur tels que int, float, etc.) et la transmission de références (types de données d'objet sans valeur tels que dictionnaires et listes). Représente) deux mécanismes de base et la fonction pratique de transfert de mots-clés (utilisez directement le nom du paramètre formel de la fonction pour spécifier la cible de transfert des paramètres réels. Par exemple, la fonction est définie comme def f(a,b). ,c), alors f( peut être utilisé lors de l'appel de b=1,c=2,a=3) spécifie la méthode de transfert du paramètre formel cible, sans avoir à s'en tenir à la correspondance de position entre les paramètres formels et les paramètres réels tels que Langage C) De plus, python permet également d'encapsuler les méthodes de transmission de paramètres, ce qui constitue la base des appels de fonction avec un nombre et un type de paramètres incertains.

Par exemple : def f(*a,**b), la mise en œuvre du transfert de paramètre encapsulé consiste à ajouter * ou ** devant le paramètre formel lors de la définition de la fonction, et le paramètre formel correspondant à * (comme le a ci-dessus) sera interprété comme un tuple, et le paramètre formel correspondant à ** (comme b ci-dessus) sera interprété comme un dictionnaire Pour le transfert de paramètre spécifique lors de l'appel, voir le code suivant :

Quelles sont les utilisations des paramètres ** et * en Python ?

Le résultat de l'exécution du code ci-dessus est :

(3, 4)
{'n' : 2, 'm' : 1 >
Visible, car les variables transmises à l'aide de mots-clés seront transmises à *a dans le cadre du tuple, tandis que les variables transmises à l'aide de mots-clés seront transmises à **b dans le cadre du dictionnaire

a également un. endroit délicat. Python stipule que les variables transmises par des mots-clés doivent être écrites avant les variables transmises par des mots-clés, donc lorsque vous utilisez * et ** ensemble, le paramètre formel * doit être devant le paramètre formel **

<.> De plus, lorsque la fonction est appelée, il existe une méthode appelée unwrapping :

Quelles sont les utilisations des paramètres ** et * en Python ?

La sortie du code ci-dessus est la même que la précédente. . Lorsqu'un groupe ou un dictionnaire est transmis en tant que paramètre, si vous souhaitez adapter la définition formelle du paramètre sous la forme enveloppée (par exemple en passant h à *a et k à **b ci-dessus), utilisez * pour les tuples et **. pour les dictionnaires." "Unwrap" peut être passé.

En fait, utiliser * lors de l'appel de f, c'est rappeler à Python : je veux diviser le paramètre réel h en deux éléments dispersés c et d, et les transmettre séparément (Il est également possible de définir f dans le code ci-dessus comme def f(arg1, arg2, **b), de sorte que arg1 obtienne la valeur 3 et arg2 obtienne la valeur 4) ** La même chose est vraie lors du déballage. *Cela s'applique également aux listes ([] définit les listes, () définit les tuples).

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