Maison  >  Article  >  développement back-end  >  Comment fonctionnent les affectations chaînées en Python ?

Comment fonctionnent les affectations chaînées en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 09:38:02862parcourir

 How do Chained Assignments Work in Python?

Assignations chaînées en Python

En Python, les affectations chaînées utilisant la syntaxe x = y = somefunction() sont équivalentes à y = somefunction( ); x = y. Cela signifie que la valeur renvoyée par la fonction est d'abord attribuée à la cible la plus à gauche, puis la même valeur est attribuée aux cibles suivantes.

Cependant, une idée fausse courante est que les affectations enchaînées telles que x = y = somefunction() sont équivalents à x = somefunction(); y = une fonction(). Ce n'est pas le cas.

Évaluation de gauche à droite

La clé pour comprendre les affectations enchaînées est de se rappeler que Python évalue les expressions et les instructions de gauche à droite. Cela signifie que dans l'expression x = y = somefunction(), les étapes suivantes se produisent :

  1. somefunction() est évaluée et le résultat est stocké dans une variable temporaire (appelons-la temp).
  2. x se voit attribuer la valeur de temp.
  3. y se voit également attribuer la valeur de temp.

En conséquence, x et y finissent par faire référence au même objet.

Implications

Cette évaluation de gauche à droite peut avoir des implications importantes. Par exemple, si somefunction() renvoie un objet mutable tel qu'une liste, l'attribution à l'une des cibles affectera toutes les autres cibles qui font référence au même objet.

Exemple :

Considérez le code suivant :

<code class="python">x = y = []
x.append(1)
print(x, y)</code>

La sortie du code ci-dessus sera [1, 1] car x et y font référence au même objet de liste. Toute modification apportée à l'une des cibles sera reflétée dans les autres cibles.

Conclusion

Les affectations chaînées en Python sont évaluées de gauche à droite, ce qui donne le même objet étant affecté à toutes les cibles. Cela peut avoir des implications importantes lorsqu'il s'agit d'objets mutables, car les modifications apportées à une cible peuvent affecter toutes les références au même objet.

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