Python Language
Operatori booleani
Ricerca…
e
Valuta il secondo argomento se e solo se entrambi gli argomenti sono veri. Altrimenti valuta il primo argomento falso.
x = True
y = True
z = x and y # z = True
x = True
y = False
z = x and y # z = False
x = False
y = True
z = x and y # z = False
x = False
y = False
z = x and y # z = False
x = 1
y = 1
z = x and y # z = y, so z = 1, see `and` and `or` are not guaranteed to be a boolean
x = 0
y = 1
z = x and y # z = x, so z = 0 (see above)
x = 1
y = 0
z = x and y # z = y, so z = 0 (see above)
x = 0
y = 0
z = x and y # z = x, so z = 0 (see above)
Gli 1
nell'esempio sopra possono essere cambiati in qualsiasi valore di verità, e gli 0
possono essere cambiati in qualsiasi valore di falso.
o
Valuta il primo argomento di verità se uno degli argomenti è vero. Se entrambi gli argomenti sono falsi, valuta il secondo argomento.
x = True
y = True
z = x or y # z = True
x = True
y = False
z = x or y # z = True
x = False
y = True
z = x or y # z = True
x = False
y = False
z = x or y # z = False
x = 1
y = 1
z = x or y # z = x, so z = 1, see `and` and `or` are not guaranteed to be a boolean
x = 1
y = 0
z = x or y # z = x, so z = 1 (see above)
x = 0
y = 1
z = x or y # z = y, so z = 1 (see above)
x = 0
y = 0
z = x or y # z = y, so z = 0 (see above)
Gli 1
nell'esempio sopra possono essere cambiati in qualsiasi valore di verità, e gli 0
possono essere cambiati in qualsiasi valore di falso.
non
Restituisce il contrario della seguente affermazione:
x = True
y = not x # y = False
x = False
y = not x # y = True
Valutazione del cortocircuito
Python valuta minimamente le espressioni booleane.
>>> def true_func():
... print("true_func()")
... return True
...
>>> def false_func():
... print("false_func()")
... return False
...
>>> true_func() or false_func()
true_func()
True
>>> false_func() or true_func()
false_func()
true_func()
True
>>> true_func() and false_func()
true_func()
false_func()
False
>>> false_func() and false_func()
false_func()
False
`e` e` or` non sono garantiti per restituire un valore booleano
Quando usi or
, restituirà il primo valore nell'espressione se è vero, altrimenti restituirà ciecamente il secondo valore. Vale a dire or
è equivalente a:
def or_(a, b):
if a:
return a
else:
return b
Per and
, restituirà il suo primo valore se è falso, altrimenti restituisce l'ultimo valore:
def and_(a, b):
if not a:
return a
else:
return b
Un semplice esempio
In Python puoi confrontare un singolo elemento usando due operatori binari: uno su entrambi i lati:
if 3.14 < x < 3.142:
print("x is near pi")
In molti (più?) Linguaggi di programmazione, questo sarebbe valutato in modo contrario alla matematica normale: (3.14 < x) < 3.142
, ma in Python è trattato come 3.14 < x and x < 3.142
, proprio come la maggior parte dei non programmatori mi aspetterei.