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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow