2017-12-22 6 views
-2

In Python ist True != TrueFalse und False != True sollte True sein. Sollte das Ergebnis der Auswertung dann aber auch True sein?Warum wird True! = True! = True ausgewertet Falsch

+0

Ich habe dies ausgeführt: print (True! = True) drucken (False! = True). Und die Ausgabe, die ich bekam, ist False True. Ich verstehe nicht, was genau deine Zweifel sind. –

+1

Der Zweifel kommt von der Annahme, dass die Bedingungen sequenziell und kumulativ wie eine arithmetische Operation ausgewertet werden. Stattdessen ist dies tatsächlich eine Kette von einzelnen, gleichzeitigen Überprüfungen (verkettet durch eine 'und' Operation). – gandreadis

+3

Siehe [Dokumentation für Vergleiche] (https://docs.python.org/3/reference/expressions.html#comparisons). – Galen

Antwort

6

Dies liegt daran, dass die beiden Prüfungen unabhängig voneinander durchgeführt werden. True != True != True ist äquivalent zu True != True and True != True, was zu False auswertet, da keiner der Operanden zu True auswertet (tatsächlich wertet es sogar den zweiten True != True Vergleich aufgrund von Kurzschluss nicht aus).

Die relevante documentation:

Vergleiche beliebig verkettet werden können, beispielsweise x < y <= z entspricht x < y and y <= z, außer dass y ausgewertet wird nur einmal (in beiden Fällen aber z überhaupt nicht ausgewertet wird, wenn x < y gefunden falsch sein).

Verwandte Themen