Assignation multiple et ordre d'évaluation en Python
En Python, les affectations multiples sont une pratique courante, où plusieurs variables se voient attribuer des valeurs simultanément. Cependant, l'ordre d'évaluation dans de telles missions peut avoir des conséquences inattendues.
Le problème
Considérez le code suivant :
>>> x = 1 >>> y = 2 >>> x, y = y, x + y # Multiple assignment
Après cela affectation, les valeurs de x et y sont :
>>> x 2 >>> y 3
Cela diffère de ce à quoi on pourrait s'attendre si les affectations étaient effectuées séparément :
>>> x = 1 >>> y = 2 >>> x = y # Assign x to the current value of y >>> y = x + y # Assign y to the sum of x and y >>> x 2 >>> y 4
L'explication
La différence est due à l'ordre d'évaluation dans les énoncés de mission. En Python, le côté droit d'une affectation est évalué en premier, avant que l'affectation réelle aux variables n'ait lieu.
Dans le premier exemple, lorsque nous attribuons x, y = y, x y, le côté droit- Le côté main est évalué comme suit :
ham = y # Where ham = 2 spam = x + y # Where spam = 1 + 2 = 3
Ensuite, x se voit attribuer la valeur de ham (2) et y reçoit la valeur de spam (3). C'est pourquoi nous obtenons le résultat x = 2 et y = 3.
En revanche, dans le deuxième exemple, x se voit d'abord attribuer la valeur de y, qui est 2. Ensuite, y se voit attribuer la somme de x (2) et y (2), ce qui donne 4.
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!