"x, = ..." en Python est-il l'opérateur virgule ?
En Python, une virgule après les lignes variables dans une affectation Cette déclaration peut susciter des questions sur son objectif. Contrairement à l'intuition, ce n'est pas l'opérateur virgule qui fusionne plusieurs expressions ou séparateurs, mais plutôt un indicateur de décompression d'un tuple à un seul élément renvoyé par l'appel de fonction.
Par exemple, dans l'exemple de code :
<code class="python">line, = ax.plot(x, np.sin(x))</code>
ax.plot() renvoie un tuple contenant un seul objet Line2D. La virgule dans cette ligne décompresse le tuple et attribue l'élément à la ligne variable.
Ce modèle est couramment utilisé lorsqu'il s'agit de fonctions qui renvoient plusieurs valeurs. Prenons l'exemple suivant :
<code class="python">base, ext = os.path.splitext(filename)</code>
Ici, os.path.splitext() renvoie un tuple avec deux éléments, affectés aux variables base et ext.
La virgule dans la cible d'affectation peut être omis lorsque la cible est une liste ou un tuple qui correspond au nombre d'éléments dans le tuple décompressé :
<code class="python">(line,) = ax.plot(x, np.sin(x))</code>
Alternativement, vous pouvez éviter complètement le décompression en accédant directement au premier élément du tuple renvoyé :
<code class="python">line = ax.plot(x, np.sin(x))[0]</code>
L'utilisation du déballage de tuples dans les affectations offre un moyen concis et lisible d'attribuer plusieurs variables à la fois, en particulier lorsqu'il s'agit de fonctions qui renvoient plusieurs valeurs.
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!