Умовні вирази 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.