Recherche…


et

Évalue le deuxième argument si et seulement si les deux arguments sont véridiques. Sinon, évalue au premier argument de falsey.

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)

Les 1 dans l'exemple ci-dessus peuvent être changés en n'importe quelle valeur, et les 0 peuvent être changés en n'importe quelle valeur.

ou

Évalue le premier argument véridique si l'un des arguments est véridique. Si les deux arguments sont faux, évaluez le deuxième argument.

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)

Les 1 dans l'exemple ci-dessus peuvent être changés en n'importe quelle valeur, et les 0 peuvent être changés en n'importe quelle valeur.

ne pas

Il renvoie le contraire de l'instruction suivante:

x = True
y = not x # y = False

x = False
y = not x # y = True

Évaluation du court-circuit

Python évalue minimalement les expressions booléennes.

>>> 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

`et` et` ou` ne sont pas garantis pour renvoyer un booléen

Lorsque vous utilisez or , il renverra la première valeur de l'expression si elle est vraie, sinon elle retournera aveuglément la deuxième valeur. Ie or est équivalent à:

def or_(a, b):
    if a:
        return a
    else:
        return b

Pour and , il retournera sa première valeur si elle est fausse, sinon elle retourne la dernière valeur:

def and_(a, b):
    if not a:
        return a
    else:
        return b

Un exemple simple

En Python, vous pouvez comparer un seul élément en utilisant deux opérateurs binaires - un de chaque côté:

if 3.14 < x < 3.142:
    print("x is near pi")

Dans de nombreux langages de programmation (la plupart?), Cela serait évalué d'une manière contraire aux calculs normaux: (3.14 < x) < 3.142 , mais en Python, il est traité comme 3.14 < x and x < 3.142 , comme la plupart des non-programmeurs attendrait.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow