Ho una riga di codice nel mio script che ha entrambi questi operatori concatenati. Dalla documentazione di riferimento BOOLEAN E ha precedenza inferiore rispetto a COMPARAZIONE DI MAGGIORANZA DI. Sto ottenendo risultati inattesi qui, in questo codice:Precisione dell'operatore Python - e superiore a
>>> def test(msg, value):
... print(msg)
... return value
>>> test("First", 10) and test("Second", 15) > test("Third", 5)
First
Second
Third
True
mi aspettavo Seconda o Terza prova per accadere prima che il pugno, dal momento >
operatore ha una precedenza più alta. Cosa sto facendo di sbagliato qui?
https://docs.python.org/3/reference/expressions.html#operator-precedence
L'interpretazione booleana del tuo primo valore, '10', è anche True. Pertanto, '10 e 15> 5 == 10 e (15> 5) == 10 e True == True' – Finwood
Ma perché l'interprete ha ottenuto 10 prima di 15 o 5? Il confronto non dovrebbe avvenire prima dei controlli booleani? –
'test (" First ", 10) e test (" Second ", 15)> test (" Third ", 5)' è equivalente a 'test (" First ", 10) e (test (" Second ", 15)> test ("Terzo", 5)) 'Anche Python valuta' and' [pigramente] (https://docs.python.org/3/reference/expressions.html#boolean-operations) – Alik