Wie wird 1 == 2 == 2 bewertet? [Duplikat]

Aug 22 2020

Das Ausführen in der REPL gibt mir

>>> 1 == 2 == 2
False

Was mich überraschte, in C würde dies zu 1 führen. Ich erwartete, dass die rechte Seite zu Python führt Trueund 1 == Truesich Truein Python befindet. Dies wird beispielsweise so bewertet, wie ich es erwarten würde:

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

Wie analysiert und bewertet Python den ersten Ausdruck? Dies wird auf die gleiche Weise bewertet, aber dies ist das, was ich erwarten würde, da ==es rechtsassoziativ ist und in C mit 0 bewertet wird

>>> 2 == 2 == 1
False

Antworten

7 Noname Aug 22 2020 at 00:22

Dies ist auf das Verkettungsphänomen des Bedieners zurückzuführen

Ein Beispiel :

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

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