Умовні вирази Python

Ряд операцій представляють умовні вирази. Всі ці операції приймають два операнди і повертають логічне значення, яке в Python представляє тип boolean. Існує тільки два логічних значення - True (вираз істинно) і False (вираз хибний).

Операція порівняння

Найпростіші умовні вирази представляють операції порівняння, які порівнюють два значення. Python підтримує наступні операції порівняння:

  • == - повертає True, якщо обидва операнда рівні. Інакше повертає False.
  • != - повертає True, якщо обидва операнда не рівні. Інакше повертає False.
  • > (більше ніж) - повертає True, якщо перший операнд більше другого.
  • < (менше ніж) - повертає True, якщо перший операнд менше другого.
  • > = (більше або дорівнює) - повертає True, якщо перший операнд більше або дорівнює другому.
  • < = (менше або дорівнює) - повертає True, якщо перший операнд менше або дорівнює другому.

Приклади операцій порівняння:

a = 5
b = 6
result = 5 == 6 # зберігаємо результат операції в змінну  
print(result) # False - 5 не дорівнює 6  
print(a != b) # True  
print(a > b) # False - 5 менше 6  
print(a < b) # True     

bool1 = True  
bool2 = False  
print (bool1 = = bool2) # False-bool1 не дорівнює bool2 

Операції порівняння можуть порівнювати різні об'єкти - рядки, числа, логічні значення, однак обидва операнда операції повинні представляти один і той же тип.

Логічні операції

Для створення складових умовних виразів застосовуються логічні операції. В Python є наступні логічні оператори:

  • and (логічне множення) - повертає True, якщо обидва вирази є істинними​
age = 22
weight = 58
isMarried = False
result = age > 21 and weight == 58 and isMarried
print(result) # False, так як isMarried = False 
  • У даному випадку оператор and порівнює результати двох виразів: age > 21 weight == 58. І якщо обидва ці вирази повертають True, то оператор and також повертає True. Причому як одне з виражень необов'язково виступає операція порівняння: це може бути інша логічна операція або просто змінна типу boolean, яка зберігає True або False.
age = 22
weight = 58
isMarried = False
result = age > 21 and weight == 58 and isMarried
print(result) # False, так як isMarried = False 
  • or (логічне додавання) - повертає True, якщо хоча б одне з виразів дорівнює True
age = 22
isMarried = False  
result = age > 21 or isMarried  
print(result) # True, так як вираз age > 21 одно True 
  • not (логічне заперечення) - повертає True, якщо вираз дорівнює False
age = 22
isMarried = False
print(not age > 21) # False
print(not isMarried) # True  

Якщо один з операндів оператора and повертає False, то другий операнд вже не оцінюється, так як оператор в будь-якому випадку поверне Flase. Подібна поведінка дозволяє трохи збільшити продуктивність, так як не доводиться витрачати ресурси на оцінку другого операнда.

Аналогічно якщо один з операндів оператора or повертає True, то другий операнд не оцінюється, так як оператор в будь-якому випадку поверне True.

Якщо в одному вираженні одночасно використовується кілька або навіть всі логічні оператори, то слід враховувати, що вони мають різні пріоритети. Спочатку виконується оператор not, потім оператор and, а в кінці оператор or:

age = 22
isMarried = False
weight = 58
result = weight == 58 or isMarried and not age > 21 # True
print(result)  ​

Тут буде наступний хід обчислень:

not age > 21 дорівнює False
isMarried and False, not age > 21) дорівнює False
weight == 58 or False (isMarried and not age > 21) True

Для перевизначення порядку обчислень ми можемо використовувати дужки:

age = 22  
isMarried = False  
weight = 58  
result = (weight == 58 or isMarried) and not age > 21 # False  
print(result) 

На відміну від першого випадку тут результатом буде значення False.