Le operazioni booleane hanno la priorità più bassa rispetto a tutte le operazioni di Python:
expression |
::= | or_test | lambda_form |
or_test |
::= | and_test | or_test "or" and_test |
and_test |
::= | not_test | and_test "and" not_test |
not_test |
::= | comparison | "not" not_test |
lambda_form |
::= | "lambda" [parameter_list]: expression |
Nel contesto delle operazioni booleane, ed anche quando le espressioni
vengono usate dal flusso di controllo delle istruzioni, i seguenti
valori vengono interpretati come falso: None
, il numero zero in
tutti i tipi, sequenze vuote (stringhe, tuple e liste) e mappe vuote
(dizionari). Tutti gli altri valori vengono interpretati come vero.
Gli operatori not producono True
se il proprio
argomento è falso, altrimenti producono False
.
L'espressione x and y
valuta prima x; se
x è falso viene restituito il suo valore; altrimenti viene
valutata y e viene restituito il valore risultante.
L'espressione x or y
valuta prima x; se
x è vero viene restituito il suo valore; altrimenti viene
valutato y e viene restituito il valore risultante.
(Da notare che né and e né or limitano il valore e
il tipo che restituiscono come False
o True
, ma
piuttosto restituiscono l'ultimo argomento valutato. Questo è utile
in certe occasioni, per esempio se s
è una stringa che dovrebbe
essere sostituita con un valore predefinito se vuota, l'espressione
s or 'foo'
produce il valore desiderato. Dato che
not non inventa comunque un valore, la restituzione di un
valore dello stesso tipo del proprio argomento non confonde, così per
esempio, not 'foo'
produce False
, non ''
.)
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.