Python pakub loogilisi operaatoreid loogiliste (Boole'i) operatsioonide tegemiseks.(and
,or
,not
)
Seda kasutatakse mitme tingimuse vahelise seose kirjeldamiseks if-avalduses.
Selles jaotises kirjeldatakse järgmist.
- ristmik:
and
- loogiline lisamine:
or
- eitamine:
not
and
,or
,not
Operaatori eelisjärjekord
Lisaks on ettevaatusabinõuna selgitatud järgmisi punkte.
- Loogilised operaatorid muud tüüpi objektidele kui bool
and
,or
Need tagastusväärtused ei ole tingimata tüübilt bool.- Lühiseade (lühise hindamine)
ristmik: and
ja tagastab kahe väärtuse loogilise korrutise.
print(True and True)
# True
print(True and False)
# False
print(False and True)
# False
print(False and False)
# False
Tegelikult kasutatakse seda sageli mitte tõe või vale, vaid tingimuslike väljendite puhul, mis kasutavad võrdlusoperaatoreid. Informatsiooniks, võrdlusoperaatorid on järgmised.
<
>
a = 10
print(0 < a)
# True
print(a < 100)
# True
print(0 < a and a < 100)
# True
ja neid saab liita järgmiselt.
print(0 < a < 100)
# True
loogiline lisamine: or
või tagastab kahe väärtuse loogilise VÕI.
print(True or True)
# True
print(True or False)
# True
print(False or True)
# True
print(False or False)
# False
eitamine: not
not” tagastab väärtuse eituse; true ja false on ümberpööratud.
print(not True)
# False
print(not False)
# True
and,or,notOperaatori eelisjärjekord
Nende loogiliste operaatorite tähtsuse järjekord on järgmine: not on kõrgeim.
not
and
or
Järgnevas näidiskoodis tõlgendatakse ülaltoodud väljendit nii, nagu oleks see alljärgnev. Kuna liigsete sulgudega ei ole probleemi, siis võib olla lihtsam neid selgelt kirjeldada sellistel juhtudel nagu see näide.
print(True or True and False)
# True
print(True or (True and False))
# True
Kui soovite kasutada või enne ja, kasutage sulgusid().
print((True or True) and False)
# False
<
,>
Neil võrdlusoperaatoritel on isegi suurem tähtsus kui mitte. Seetõttu ei ole sulgud vajalikud iga võrdlusoperatsiooni puhul, nagu oli ülaltoodud näites.
print(0 < a and a < 100)
# True
Pythoni operaatorite eelisjärjekorra kohta leiate kokkuvõtte allpool olevast ametlikust dokumentatsioonist.
Loogilised operaatorid muud tüüpi objektidele kui bool
Nende loogiliste operaatorite abil ei töödelda bool-tüüpe (true, false), vaid ka numbreid, string'e, loendeid jne boole'i väärtustena.
Järgmisi objekte peetakse Pythoni loogilistes operatsioonides valeks.
- Konstandid, mis on määratletud valeks:
None
,false
- Null numbrilistes tüüpides:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Tühi jada või kogumik:
''
,()
,[]
,{}
,set()
,range(0)
Kõik muud väärtused loetakse tõeseks.
Funktsiooni bool() saab kasutada objekti bool'i väärtuse saamiseks. Pange tähele, et string '0' või 'False' loetakse tõeseks.
print(bool(10))
# True
print(bool(0))
# False
print(bool(''))
# False
print(bool('0'))
# True
print(bool('False'))
# True
print(bool([]))
# False
print(bool([False]))
# True
Selleks, et käsitleda '0' või 'false' stringis valena, kasutage distutils.util.strtobool().
and,orNeed tagastusväärtused ei ole tingimata tüübilt bool.
Siin on näide muu kui bool-tüüpi objekti kohta, mis näitab iga operaatori tulemust numbrilise väärtuse kohta.
x = 10 # True
y = 0 # False
print(x and y)
# 0
print(x or y)
# 10
print(not x)
# False
Nagu ülaltoodud näitest näha, ei tagasta ja ja või Pythonis bool-tüüpi väärtusi true või false, vaid tagastavad vasakul või paremal asuva väärtuse sõltuvalt sellest, kas see on true või false. Näide on numbriline, kuid sama kehtib ka teiste tüüpide, näiteks stringide ja loendite kohta. Muide, not tagastab bool-tüübi true või false.
Tagastusväärtuste ja ja või määratlused on järgmised.
The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.
The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.
6.11. Boolean operations — Expressions — Python 3.10.1 Documentation
Kui vasaku ja parema väljendi väärtused on tõene ja väär eraldi, on tagastusväärtused kergesti mõistetavad. Teisalt, kui mõlemad on tõesed või mõlemad on valed, on tagastusväärtus sõltuvalt järjekorrast erinev.
Kui kasutate seda tingimusliku väljendusena if-avalduses jne, hinnatakse tulemust boole'i väärtuseks ja seda töödeldakse, nii et te ei pea selle pärast muretsema, kuid kui kasutate tagastusväärtust edasiseks töötlemiseks, peate olema ettevaatlik.
x = 10 # True
y = 100 # True
print(x and y)
# 100
print(y and x)
# 10
print(x or y)
# 10
print(y or x)
# 100
x = 0 # False
y = 0.0 # False
print(x and y)
# 0
print(y and x)
# 0.0
print(x or y)
# 0.0
print(y or x)
# 0
print(bool(x and y))
# False
Kui soovite seda käsitleda tõese või valena, saate seda teha nagu eelmises näites.bool(x and y)
ja ja või tagastusväärtused on kokkuvõtlikult esitatud alljärgnevas tabelis.
x | y | x and y | x or y |
---|---|---|---|
true | false | y | x |
false | true | x | y |
true | true | y | x |
false | false | x | y |
Lühiseade (lühise hindamine)
Nagu ülaltoodud tabelist näha, kui x on vale x-is ja y-is või kui x on tõene x-is või y-is, on tagastusväärtus x sõltumata y-i väärtusest.
Sellisel juhul ei hinnata y.
and
,or
Pange tähele, et kui te kutsute nende protsesside paremal poolel olevat funktsiooni või meetodit, et teha mingit töötlemist, ei pruugi protsess sõltuvalt vasakul poolel olevast tulemusest täide minna.
def test():
print('function is called')
return True
print(True and test())
# function is called
# True
print(False and test())
# False
print(True or test())
# True
print(False or test())
# function is called
# True