Maison >développement back-end >Tutoriel Python >En quoi l'affectation multiple de Python diffère-t-elle de l'affectation séquentielle ?

En quoi l'affectation multiple de Python diffère-t-elle de l'affectation séquentielle ?

DDD
DDDoriginal
2024-12-05 02:26:09396parcourir

How Does Python's Multiple Assignment Differ from Sequential Assignment?

Mystère des affectations multiples en Python

En Python, les affectations peuvent être évaluées d'une manière qui peut ne pas être immédiatement évidente. L'un de ces cas est l'affectation multiple, dans laquelle deux variables ou plus se voient attribuer des valeurs simultanément.

Considérez ce qui suit :

>>> x = 1
>>> y = 2

Essayons maintenant d'attribuer les deux valeurs à la fois :

>>> x, y = y, x + y
>>> x
2
>>> y
3

De façon inattendue, cela produit des résultats différents par rapport à l'attribution des valeurs séparément :

>>> x = 1
>>> y = 2
>>> x = y
>>> y = x + y
>>> x
2
>>> y
4

Explication

La clé pour comprendre ce comportement réside dans l'ordre d'évaluation dans un énoncé de mission. En Python, le côté droit d'une affectation est toujours évalué complètement avant le réglage réel des variables.

Dans le premier cas, "x, y = y, x y", le côté droit est évalué comme suit :

  • y est évalué en ham.
  • x y est évalué en spam.

Les variables sont alors définis sur ces valeurs : x est attribué au jambon et y est attribué au spam.

En revanche, dans le deuxième cas, "x = y; y = x y", les affectations se produisent séquentiellement : x est défini à y, puis y est défini sur x y, ce qui équivaut à y y.

Par conséquent, l'affectation multiple dans le premier cas se comporte différemment car les valeurs sont évaluées et définies simultanément. Si vous souhaitez effectuer des tâches distinctes, vous devez utiliser cette dernière approche séquentielle.

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