Ряд операцій представляють умовні вирази. Всі ці операції приймають два операнди і повертають логічне значення, яке в 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.