Warum wird (1 == 2! = 3) in Python zu False ausgewertet?

8

Warum bewertet (1 == 2 != 3) in Python False , während sowohl ((1 == 2) != 3) als auch (1 == (2 != 3)) als True ausgewertet werden?

Welcher Operator-Vorrang wird hier verwendet?

    
Mo Xu 20.12.2017, 06:45
quelle

2 Antworten

16

Dies liegt an den Operatoren chaining phenomenon . Der Pydoc erklärt es als:

  

Vergleiche können willkürlich verkettet werden, z. B. x & lt; y & lt; = z ist äquivalent   zu x & lt; y und y & lt; = z , außer dass y nur einmal ausgewertet wird (aber in beiden   Fälle z werden überhaupt nicht ausgewertet, wenn x & lt; y ist falsch).

Und wenn Sie sich die Priorität von == und% co_de ansehen % operators, Sie werden feststellen, dass sie den gleichen Vorrang haben und daher für das Verkettungsphänomen gelten.

Was im Grunde passiert:

%Vor%     
Kaushik NP 20.12.2017, 06:57
quelle
3

Ein verketteter Ausdruck wie A op B op C , wobei op Vergleichsoperatoren sind, wird im Gegensatz zu C als ( Ссылка ):

%Vor%

Daher wird Ihr Beispiel als

bewertet %Vor%

was zu False führt.

    
clemens 20.12.2017 06:57
quelle

Tags und Links