Diese Frage hat hier schon eine Antwort:
Ich bin gerade auf die folgende Zeile in Python 3 gestoßen.
%Vor% Ich habe erwartet, dass dies True
ist, da 1 in range(2)
True ist und True == True
True ist.
Aber dies gibt False
aus. Es bedeutet also nicht dasselbe wie (1 in range(2)) == True
. Außerdem bedeutet das nicht dasselbe wie 1 in (range(2) == True)
, was einen Fehler verursacht.
Trotz jahrelanger Erfahrung in Python bin ich überrascht. Was ist los?
Dies ist aufgrund der Tatsache, dass beide Operatoren Vergleichsoperatoren sind, so dass es als Operatorverkettung interpretiert wird:
Vergleiche können beliebig verkettet werden, z. B.
x < y <= z
ist äquivalent tox < y and y <= z
, außer dassy
nur einmal ausgewertet wird (aber in beiden Fällez
wird überhaupt nicht ausgewertet, wennx < y
als falsch erkannt wird.
Es entspricht also:
%Vor%Tags und Links python python-3.x