Предикаты

Некоторые фразы не могут быть ни правдивыми, ни лживыми: «Реши задачу», «Это утверждение ложно», «Почему небо голубое?». А предикат — это такая фраза, которая может оказаться правдой или неправдой: «этот счёт оплачен», «этот пользователь решил задачу».

В Python предикаты нужны для конструкции if. Например, вот так можно проверить, оплачен ли счёт:

if invoice_is_paid:
   # выдаём доступ к модулю

Во время исполнения кода правдивые предикаты превращаются в True, а лживые — в False:

print(1 + 1 == 2)  # True
print(1 + 1 == 3)  # False

Над предикатами можно совершать логические операции: отрицание (not), конъюнкцию (and) и дизъюнкцию (or):

print(not True)  # False
print(1 + 1 == 2 or 1 + 1 == 3)  # True

Любое выражение в Python можно сделать предикатом, если использовать функцию bool:

print(bool(1))  # True
print(bool('Привет'))  # True
print(bool(-1))  # True
print(bool(''))  # False
print(bool(0))  # False
print(bool(None))  # False

Из примера выше видно, что нулевые значения, вроде '', 0 и None равны False, а любые ненулевые (и даже отрицательные) — True.

Выражения становятся предикатами сами по себе, без вызова bool, если в них есть знаки сравнения (==, <=, >) или отрицание not:

print(not 'Привет')  # False
print(0 <= 1)  # True

О том, как используются предикаты на практике, мы рассказываем в статье «Превращение типов в bool».

Альтернативные источники

Если мы не смогли объяснить материал, напишите нам или попробуйте альтернативные источники по теме: