Python Language
Booleska operatörer
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.