Maison > développement back-end > Tutoriel Python > Comment fonctionnent les affectations chaînées en Python ? Sont-elles vraiment équivalentes à plusieurs affectations séquentielles ?

Comment fonctionnent les affectations chaînées en Python ? Sont-elles vraiment équivalentes à plusieurs affectations séquentielles ?

Susan Sarandon
Libérer: 2024-10-28 03:07:31
original
1096 Les gens l'ont consulté

How do chained assignments work in Python? Are they truly equivalent to multiple sequential assignments?

Comprendre les affectations chaînées en Python

Les affectations chaînées en Python, illustrées par des expressions telles que "x = y = somefunction()", ont suscité discussions concernant leur équivalence à plusieurs affectations séquentielles ("x = somefunction(); y = somefunction()"). Pour clarifier ce sujet, explorons en détail le fonctionnement des affectations chaînées.

Dans une affectation chaînée, la cible la plus à gauche est attribuée en premier. Par conséquent, "x = y = somefunction()" équivaut à :

temp = somefunction()
x = temp
y = temp
Copier après la connexion

Cet ordre est crucial, car la cible de gauche reçoit la valeur de la variable temporaire "temp" avant qu'elle ne soit affectée à la cible à droite. Ceci est évident dans le démontage d'une fonction d'affectation chaînée :

>>> def chained_assignment():
...     x = y = some_function()
...
>>> import dis
>>> dis.dis(chained_assignment)
  2           0 LOAD_GLOBAL              0 (some_function)
              3 CALL_FUNCTION            0
              6 DUP_TOP
              7 STORE_FAST               0 (x)
             10 STORE_FAST               1 (y)
             13 LOAD_CONST               0 (None)
             16 RETURN_VALUE
Copier après la connexion

Notez que la valeur renvoyée par la fonction est stockée d'abord dans "x", puis dans "y".

Ceci la compréhension est cruciale pour comprendre le comportement des affectations enchaînées. Par exemple, les expressions telles que « x = y = [] » doivent être évitées, car « x » et « y » feront référence à la même liste. Privilégiez plutôt des affectations distinctes comme "x = []" et "y = []" pour créer des listes distinctes.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal