Come viene valutato 1 == 2 == 2? [duplicare]

Aug 22 2020

L'esecuzione di questo nel REPL mi dà

>>> 1 == 2 == 2
False

Il che mi ha sorpreso, in C questo restituirebbe 1. Mi aspettavo che il lato destro valutasse Trueed 1 == Trueè Truein Python. Ad esempio, questo valuta come mi aspetterei:

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

In che modo Python analizza e valuta la prima espressione? Questo, valuta allo stesso modo ma questo è quello che mi aspetterei perché ==è associativo a destra e restituirebbe 0 in C

>>> 2 == 2 == 1
False

Risposte

7 Noname Aug 22 2020 at 00:22

Ciò è dovuto al fenomeno del concatenamento degli operatori

Un esempio :

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

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