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 True
ed 1 == True
è True
in 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