Logické operátory jazyka Python a, alebo a nie (logická konjunkcia, disjunkcia, negácia)

obchodné

Python poskytuje logické operátory na vykonávanie logických (logických) operácií.(and,or,not)
Používa sa na opis vzťahu medzi viacerými podmienkami v príkaze if.

V tejto časti sú opísané nasledujúce položky.

  • križovatka: and
  • logické pridanie: or
  • odmietnutie: not
  • and,or,notPrednosť operátora

Okrem toho sú vysvetlené nasledujúce body ako upozornenia.

  • Logické operátory pre objekty iného typu ako bool
  • and,orTieto návratové hodnoty nemusia byť nutne typu bool.
  • Skrat (vyhodnotenie skratu)

križovatka: and

a vráti logický súčin dvoch hodnôt.

print(True and True)
# True

print(True and False)
# False

print(False and True)
# False

print(False and False)
# False

V skutočnosti sa často nepoužíva pre true alebo false, ale pre podmienené výrazy s použitím operátorov porovnávania. Pre vašu informáciu, operátory porovnávania sú nasledovné.

  • <
  • >
a = 10
print(0 < a)
# True

print(a < 100)
# True

print(0 < a and a < 100)
# True

a možno ich spojiť takto.

print(0 < a < 100)
# True

logické pridanie: or

alebo vráti logickú OR týchto dvoch hodnôt.

print(True or True)
# True

print(True or False)
# True

print(False or True)
# True

print(False or False)
# False

odmietnutie: not

not“ vracia negáciu hodnoty; true a false sú obrátené.

print(not True)
# False

print(not False)
# True

and,or,notPrednosť operátora

Poradie priority týchto logických operátorov je nasledovné: not je najvyššie.

  1. not
  2. and
  3. or

V nasledujúcej ukážke kódu sa vyššie uvedený výraz interpretuje, ako keby to bol výraz uvedený nižšie. Keďže s extra zátvorkami nie je problém, môže byť jednoduchšie ich jasne popísať v prípadoch, ako je tento príklad.

print(True or True and False)
# True

print(True or (True and False))
# True

Ak chcete operovať alebo pred a, použite zátvorky().

print((True or True) and False)
# False

<,>Tieto operátory porovnávania majú ešte vyššiu prioritu ako ostatné. Preto nie sú potrebné zátvorky pre každú operáciu porovnávania, ako to bolo v príklade vyššie.

print(0 < a and a < 100)
# True

Prehľad priorít operátorov v jazyku Python nájdete v oficiálnej dokumentácii nižšie.

Logické operátory pre objekty iného typu ako bool

Pomocou týchto logických operátorov sa ako logické hodnoty spracúvajú nielen typy bool (true, false), ale aj čísla, reťazce, zoznamy atď.

Nasledujúce objekty sú v logických operáciách jazyka Python považované za nepravdivé.

  • Konštanty definované ako false: None,false
  • Nula v číselných typoch: 0,0,0j,Decimal(0),Fraction(0, 1)
  • Prázdna sekvencia alebo kolekcia: '',(),[],{},set(),range(0)

Všetky ostatné hodnoty sa považujú za pravdivé.

Funkciu bool() možno použiť na získanie logickej hodnoty objektu. Všimnite si, že reťazec '0' alebo 'False' sa považuje za true.

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

Ak chcete spracovať '0' alebo 'false' v reťazci ako false, použite distutils.util.strtobool().

and,orTieto návratové hodnoty nemusia byť nutne typu bool.

Tu je príklad objektu iného ako typu bool, ktorý ukazuje výsledok každého operátora na číselnej hodnote.

x = 10  # True
y = 0  # False

print(x and y)
# 0

print(x or y)
# 10

print(not x)
# False

Ako vidíte z uvedeného príkladu, and a or v jazyku Python nevracajú true alebo false typu bool, ale vracajú hodnotu na ľavej alebo pravej strane podľa toho, či je true alebo false. Príklad je číselný, ale to isté platí aj pre iné typy, ako sú reťazce a zoznamy. Mimochodom, not vracia true alebo false typu bool.

Definície návratových hodnôt a a alebo sú nasledovné.

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

Ak sú hodnoty ľavého a pravého výrazu zvlášť true a false, návratové hodnoty sú ľahko pochopiteľné. Na druhej strane, ak sú oba výrazy true alebo oba false, návratová hodnota sa bude líšiť v závislosti od poradia.

Ak ho použijete ako podmienený výraz v príkaze if atď., výsledok sa vyhodnotí ako logická hodnota a spracuje sa, takže sa oň nemusíte starať, ale ak použijete návratovú hodnotu na ďalšie spracovanie, musíte byť opatrní.

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

Ak ho chcete považovať za true alebo false, môžete to urobiť ako v poslednom príklade.
bool(x and y)

Návratové hodnoty príkazov and a or sú zhrnuté v nasledujúcej tabuľke.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

Skrat (vyhodnotenie skratu)

Ako vidíte z vyššie uvedenej tabuľky, ak je x false v x a y alebo ak je x true v x alebo y, návratová hodnota bude x bez ohľadu na hodnotu y.

V takom prípade sa y nevyhodnocuje.

and,orVšimnite si, že ak zavoláte funkciu alebo metódu na pravej strane týchto procesov, aby ste vykonali nejaké spracovanie, proces sa nemusí vykonať v závislosti od výsledku na ľavej strane.

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