Предикаты
Некоторые фразы не могут быть ни правдивыми, ни лживыми: «Реши задачу», «Это утверждение ложно», «Почему небо голубое?». А предикат — это такая фраза, которая может оказаться правдой или неправдой: «этот счёт оплачен», «этот пользователь решил задачу».
В 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».
Альтернативные источники
Если мы не смогли объяснить материал, напишите нам или попробуйте альтернативные источники по теме: