Оператор or в Python — для чего используется
В этом уроке вы узнаете об операторе or в Python и о том, как его эффективно использовать.
- Знакомство с оператором or в Python
- Short-circuit evaluation в Python
- Установка значения по умолчанию для переменной
Знакомство с оператором or в Python
Оператор or является логическим оператором. Обычно он используется для объединения двух логических выражений и возврата значения Boolean.
Оператор or возвращает значение True, если один из двух операндов имеет значение True. И он возвращает False, только если оба операнда имеют значение False.
Эта таблица истинности отображает результат оператора or:
x | y | х or у |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
В следующем примере показано, как использовать оператор or:
is_admin = False is_editor = True can_edit = is_admin or is_editor print(can_edit)
Выход:
True
Short-circuit evaluation в Python
При вычислении выражения, включающего оператор or, Python иногда может определить результат, не оценивая все операнды. Это называется short-circuit evaluation или ленивой оценкой.
Например:
x or y
Если x истинно, то оператор or возвращает x. В противном случае он возвращает y.
Другими словами, если x истинно, то оператору or не нужно оценивать y. Он просто немедленно возвращает x. Вот почему оценка называется ленивой или сокращенной. Оператор or оценивает y и возвращает результат оценки только в том случае, если x является ложным.
В Python каждый объект связан с логическим значением. И x и y могут быть любым объектом. Это открывает некоторые полезные приложения оператора or.
Установка значения по умолчанию для переменной
Оператор or позволяет установить для переменной значение по умолчанию, например:
var_name = value or default
В этом примере, если значение ложно, оператор или возвращает значение по умолчанию.
В следующем примере вам будет предложено ввести данные. Если вы ничего не введете, язык по умолчанию будет «Python»:
lang = input('Enter your language:') or 'Python' print(lang)
В следующем примере определяется функция get_data(), которая возвращает список чисел. Он использует встроенную функцию min() для поиска самого нижнего элемента в списке:
def get_data(args=None): if args: return [1, 2, 3] return [] lowest = min(get_data(args=true)) print(lowest)
Выход:
1
Он вернул 1, как и ожидалось. Однако get_data() может вернуть пустой список, например:
lowest = min(get_data()) print(lowest)
Вернулось ValueError.
Чтобы это исправить, вы можете использовать оператор or при вызове функции min():
def get_data(args=None): if args: return [1, 2, 3] return [] lowest = min(get_data() or [0]) print(lowest)
Выход:
0
В этом примере, если функция get_data() возвращает пустой список, оператор or будет рассматривать его результат как ложное значение.
Поскольку первый операнд является ложным, оператору or необходимо оценить второй операнд [0]. В этом случае вы можете указать минимальное значение по умолчанию во втором операнде.