Зарегистрируйтесь, чтобы продолжить обучение

Результат логических выражений Основы Python

В Python значения разных типов можно использовать напрямую в логических выражениях. При этом они ведут себя как True или False в зависимости от того, относятся ли к категории truthy или falsy.

Falsy и Truthy значения

В Python есть фиксированный набор значений, которые считаются ложными (falsy):

  • 0 — любое нулевое число (0, 0.0)
  • пустая строка ""
  • пустые коллекции — [], {}, set(), () (мы пока их не проходили)
  • специальное значение None

Все остальные значения считаются истинными (truthy). Например:

  • любое ненулевое число (1, -3.5)
  • непустая строка ("hi", "0")
  • непустые коллекции ([1], {"a": 1}, (0,)) (будем изучать на Хекслете)

Пример с делением на остаток

result = 10 % 2 == 0 and "yes" or "no"
print(result)   # => "yes"

Здесь выражение читается так:

  1. Сначала выполняется арифметика 10 % 2 == 0True.
  2. Потом работает and: так как слева истина, результатом становится "yes".
  3. Так как "yes" — truthy, оператор or возвращает именно его.

Как работают логические выражения

В Python логические выражения возвращают не обязательно True или False. Они возвращают один из своих операндов:

  • оператор and возвращает первый falsy-операнд или последний truthy,
  • оператор or возвращает первый truthy-операнд или последний falsy.

Поэтому результатом может быть строка, число или любой другой объект, участвующий в выражении.

Примеры

print(7 % 2 == 0 and "even" or "odd")
# => "odd"

print(("" and "not empty") or "empty")
# => "empty"

print(("hello" and "not empty") or "empty")
# => "not empty"

print((-5 > 0 and "positive") or "non-positive")
# => "non-positive"

Использование в функциях

Особенность truthy и falsy значений удобно применять в функциях. Например, можно написать функцию, которая возвращает текст, если он непустой, или значение по умолчанию, если строка пустая.

def get_text_or_default(text: str, default: str = "empty") -> str:
    return text or default

print(get_text_or_default("hello"))   # => "hello"
print(get_text_or_default(""))        # => "empty"

Здесь выражение text or default работает так:

  • если text непустой (truthy), функция вернёт его,
  • если text пустой (falsy), функция вернёт default.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff