Wie funktioniert die Operatorbindung in diesem Python-Beispiel?

8

Ich bin kürzlich über diesen Ausdruck gestolpert:

%Vor%

Es wird in False ausgewertet, aber ich verstehe nicht warum. True == False ist False und False in (False,) ist True , also beide (für mich) plausible Möglichkeiten

%Vor%

und

%Vor%

bewerten bis True , wie ich es erwartet hätte. Was läuft hier falsch?

    
Turion 27.03.2012, 12:08
quelle

1 Antwort

10

Ich glaube, das ist ein Eckfall von Pythons Vergleichsoperatorverkettung. Es wird zu

erweitert %Vor%

was zu False auswertet.

Dieses Verhalten sollte der herkömmlichen mathematischen Notation entsprechen (z. B. x == y == z bedeutet, dass alle drei gleich sind oder 0 <= x < 10 bedeutet, dass x im Bereich [0, 10) liegt). Aber in ist auch ein Vergleichsoperator, der das unerwartete Verhalten ergibt.

    
Mechanical snail 27.03.2012, 12:14
quelle