Comment 1 == 2 == 2 est-il évalué? [dupliquer]

Aug 22 2020

Exécuter ceci dans la REPL me donne

>>> 1 == 2 == 2
False

Ce qui m'a surpris, en C, cela donnerait une valeur de 1. Je m'attendais à ce que le côté droit soit évalué Trueet 1 == Trueest Trueen Python. Par exemple, cela évalue comme je m'y attendais:

>>> 1 == (2 == 2)
True

Comment Python analyse-t-il et évalue-t-il la première expression? Ceci évalue de la même manière mais c'est ce à quoi je m'attendrais car il ==est associatif à droite et serait évalué à 0 en C

>>> 2 == 2 == 1
False

Réponses

7 Noname Aug 22 2020 at 00:22

Cela est dû au phénomène de chaînage des opérateurs

Un exemple :

>>>  1==2
=> False
>>> 2!=3
=> True

>>> (1==2) and (2!=3)
  # False and True
=> False