Ich habe eine Codezeile in meinem Skript, das diese beiden Operatoren miteinander verkettet hat. Aus der Dokumentationsreferenz hat BOOLEAN UND eine niedrigere Priorität als . VERGLEICH MEHR ALS. Ich erhalte unerwartete Ergebnisse hier in diesem Code:Python-Operator Vorrang - und vs größer als
>>> def test(msg, value):
... print(msg)
... return value
>>> test("First", 10) and test("Second", 15) > test("Third", 5)
First
Second
Third
True
Ich erwarte zweiter oder dritter Test geschehen, bevor die Faust ein, da >
Operator eine höhere Priorität hat. Was mache ich hier falsch?
https://docs.python.org/3/reference/expressions.html#operator-precedence
Die boolesche Interpretation Ihres ersten Werts "10" ist ebenfalls True. Deshalb, 10 und 15> 5 == 10 und (15> 5) == 10 und Wahr == Wahr ' – Finwood
Aber warum hat der Dolmetscher 10 bekommen, bevor es 15 oder 5 getan hat? Sollte der Vergleich nicht vor booleschen Überprüfungen stattfinden? –
'Test (" First ", 10) und Test (" Second ", 15)> Test (" Third ", 5)' ist gleichbedeutend mit 'test (" First ", 10) und (test (" Second ", 15)> test ("Third", 5)) 'Auch Python wertet' und '[lazily] aus (https://docs.python.org/3/reference/expressions.html#boolean-operatings) – Alik