Оператор or в Python — для чего используется

В этом уроке вы узнаете об операторе or в 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]. В этом случае вы можете указать минимальное значение по умолчанию во втором операнде.

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *