Sök…


och

Utvärderar det andra argumentet om och bara om båda argumenten är sanningsenliga. Utvärderar annars till det första falsey-argumentet.

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)

1 : erna i exemplet ovan kan ändras till alla sanningsvärden, och 0 : erna kan ändras till valse-värde.

eller

Utvärderar det första sanningsenliga argumentet om någon av argumenten är sanningsenlig. Om båda argumenten är falsey, utvärderas till det andra argumentet.

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)

1 : erna i exemplet ovan kan ändras till alla sanningsvärden, och 0 : erna kan ändras till valse-värde.

inte

Det returnerar motsatsen till följande uttalande:

x = True
y = not x # y = False

x = False
y = not x # y = True

Kortslutningsutvärdering

Python utvärderar minimalt Booleska uttryck.

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

"och" och "eller" är inte garanterade att returnera en boolean

När du använder or kommer det antingen att returnera det första värdet i uttrycket om det är sant, annars kommer det blint att returnera det andra värdet. Dvs or motsvarar:

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

För and kommer det att returnera sitt första värde om det är falskt, annars returnerar det det sista värdet:

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

Ett enkelt exempel

I Python kan du jämföra ett enda element med två binära operatörer - en på vardera sidan:

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

På många (mest?) Programmeringsspråk skulle detta utvärderas på ett sätt som strider mot vanlig matematik: (3.14 < x) < 3.142 , men i Python behandlas det som 3.14 < x and x < 3.142 , precis som de flesta icke-programmerare skulle förvänta sig.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow