A Python logikai operátorai and, or és not (logikai konjunkció, diszjunkció, negáció)

Üzleti

A Python logikai operátorokat biztosít logikai (Boolean) műveletek elvégzésére.(and,or,not)
Több feltétel közötti kapcsolat leírására szolgál egy if utasításban.

Ez a szakasz a következőket írja le.

  • kereszteződés: and
  • logikai hozzáadás: or
  • tagadás: not
  • and,or,notÜzemeltetői elsőbbség

Ezenkívül a következő pontok óvatosságra intenek.

  • Logikai operátorok booltól eltérő típusú objektumokhoz
  • and,orEzek a visszatérési értékek nem feltétlenül bool típusúak.
  • Rövidzárlat (rövidzárlat értékelése)

kereszteződés: and

és két érték logikai szorzatát adja vissza.

print(True and True)
# True

print(True and False)
# False

print(False and True)
# False

print(False and False)
# False

Valójában gyakran nem igaz vagy hamis, hanem összehasonlító operátorokat használó feltételes kifejezésekhez használják. Tájékoztatásul közöljük, hogy az összehasonlító operátorok a következők.

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

print(a < 100)
# True

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

és a következőképpen kapcsolhatók össze.

print(0 < a < 100)
# True

logikai hozzáadás: or

vagy a két érték logikai VAGY-ját adja vissza.

print(True or True)
# True

print(True or False)
# True

print(False or True)
# True

print(False or False)
# False

tagadás: not

not” az érték negációját adja vissza; az igaz és a hamis értékek felcserélődnek.

print(not True)
# False

print(not False)
# True

and,or,notÜzemeltetői elsőbbség

Ezeknek a logikai operátoroknak az elsőbbségi sorrendje a következő: a not a legmagasabb.

  1. not
  2. and
  3. or

A következő példakódban a fenti kifejezés úgy értelmeződik, mintha az alábbi kifejezés lenne. Mivel a plusz zárójelekkel nincs probléma, talán egyszerűbb egyértelműen leírni őket az olyan esetekben, mint ez a példa.

print(True or True and False)
# True

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

Ha az és előtt vagy-t akarsz használni, használd a zárójeleket().

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

<,>Ezeknek az összehasonlító operátoroknak még nagyobb az elsőbbsége, mint a nem. Ezért a zárójelek nem szükségesek minden egyes összehasonlítási művelethez, mint a fenti példában.

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

A Python operátorok elsőbbségéről az alábbi hivatalos dokumentációban találsz összefoglalót.

Logikai operátorok booltól eltérő típusú objektumokhoz

Ezekkel a logikai operátorokkal nemcsak a bool típusok (igaz, hamis), hanem a számok, karakterláncok, listák stb. is bool értékként kezelhetők.

A következő objektumok a Python logikai műveleteiben hamisnak számítanak.

  • Falsnak definiált konstansok: None,false
  • Nulla numerikus típusokban: 0,0,0j,Decimal(0),Fraction(0, 1)
  • Üres sorozat vagy gyűjtemény: '',(),[],{},set(),range(0)

Minden más értéket igaznak tekintünk.

A bool() függvény egy objektum bool értékének lekérdezésére használható. Vegyük figyelembe, hogy a '0' vagy 'False' karakterláncot igaznak tekintjük.

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

A '0' vagy 'false' értékek hamisként való kezeléséhez használja a distutils.util.strtobool() függvényt.

and,orEzek a visszatérési értékek nem feltétlenül bool típusúak.

Íme egy példa egy nem bool típusú objektumra, amely az egyes operátorok eredményét mutatja egy numerikus értéken.

x = 10  # True
y = 0  # False

print(x and y)
# 0

print(x or y)
# 10

print(not x)
# False

Amint a fenti példából látható, az and és az or a Pythonban nem a bool típusú bool igaz vagy hamis értékét adja vissza, hanem a bal vagy jobb oldali értéket, attól függően, hogy igaz vagy hamis. A példa numerikus, de ugyanez vonatkozik más típusokra is, például a karakterláncokra és a listákra. Mellesleg a not true vagy false típusú bool értéket ad vissza.

Az and és az or visszatérési értékeinek definíciói a következők.

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

Ha a bal és a jobb oldali kifejezés értékei külön-külön igazak és hamisak, a visszatérési értékek könnyen érthetőek. Másrészt, ha mindkettő igaz vagy mindkettő hamis, a visszatérési érték a sorrendtől függően eltérő lesz.

Ha feltételes kifejezésként használod egy if utasításban stb., az eredményt boolean értékként értékeli és feldolgozza, így nem kell aggódnod emiatt, de ha a visszatérési értéket további feldolgozásra használod, akkor óvatosnak kell lenned.

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

Ha igazként vagy hamisként akarod kezelni, akkor az előző példához hasonlóan teheted meg.
bool(x and y)

Az és és vagy visszatérési értékeit az alábbi táblázat foglalja össze.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

Rövidzárlat (rövidzárlat értékelése)

Amint a fenti táblázatból látható, ha x hamis x és y esetén, vagy ha x igaz x vagy y esetén, akkor a visszatérési érték x lesz, függetlenül y értékétől.

Ilyen esetben y nem kerül kiértékelésre.

and,orVegye figyelembe, hogy ha ezeknek a folyamatoknak a jobb oldalán egy függvényt vagy metódust hív meg valamilyen feldolgozáshoz, a folyamat a bal oldalon lévő eredménytől függően nem biztos, hogy végrehajtásra kerül.

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
Copied title and URL