¿Cómo se evalúa 1 == 2 == 2? [duplicar]

Aug 22 2020

Ejecutar esto en el REPL me da

>>> 1 == 2 == 2
False

Lo que me sorprendió, en C esto evaluaría a 1. Esperaba que el lado derecho evaluara Truey 1 == Trueestá Trueen Python. Por ejemplo, esto se evalúa como esperaría:

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

¿Cómo analiza Python y evalúa la primera expresión? Esto, se evalúa de la misma manera, pero esto es lo que esperaría porque ==es asociativo a la derecha y evaluaría a 0 en C

>>> 2 == 2 == 1
False

Respuestas

7 Noname Aug 22 2020 at 00:22

Esto se debe al fenómeno de encadenamiento de operadores

Un ejemplo :

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

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