Als ich mir Antworten auf diese Frage ansah, stellte ich fest, dass ich meine eigene Antwort nicht verstand.
Ich verstehe nicht wirklich, wie dies geparst wird. Warum gibt das zweite Beispiel False zurück?
>>> 1 in [1,0] # Das ist erwartet
True
>>> 1 in [1,0] == True # Das ist seltsam
False
>>> (1 in [1,0]) == True # Das ist es, was ich wollte
True
>>> 1 in ([1,0] == True) # Aber es handelt sich nicht nur um ein Prezedenzproblem!
# Es hat keine Ausnahme im zweiten Beispiel ausgelöst.
Traceback (most recent call last):
File "", line 1, in
1 in ([1,0] == True)
TypeError: argument of type 'bool' is not iterable
Vielen Dank für jede Hilfe. Ich glaube, ich muss etwas wirklich Offensichtliches übersehen.
Ich denke, das ist subtil anders als die verlinkte Duplikation:
Warum gibt der Ausdruck 0 < 0 == 0 in Python False zurück?.
Beide Fragen haben mit dem menschlichen Verständnis des Ausdrucks zu tun. Es schien mir zwei Möglichkeiten zu geben, den Ausdruck zu bewerten. Natürlich waren beide falsch, aber in meinem Beispiel ist die letzte Interpretation unmöglich.
Wenn man sich 0 < 0 == 0
ansieht, könnte man sich vorstellen, dass jedes Halbjahr bewertet wird und Sinn als Ausdruck ergibt:
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
Also erklärt der Link, warum dies False
auswertet:
>>> 0 < 0 == 0
False
Aber mit meinem Beispiel 1 in ([1,0] == True)
ergibt keinen Sinn als Ausdruck, daher gibt es statt zwei (zugegebenermaßen falschen) möglichen Interpretationen nur eine, die möglich erscheint:
>>> (1 in [1,0]) == True