Логический тип данных
bool представляет два возможных значения: True и False. Они могут быть созданы напрямую, появиться как результат сравнения или получиться при преобразовании типа.
# boolean_values.py
is_finished = True
has_access = False
print(is_finished) # True
print(has_access) # False
Приведение типов к bool
Python умеет интерпретировать значения как истинные или ложные. Ненулевые числа и непустые последовательности считаются истинными. None, 0, пустая строка и пустой список считаются ложными.
# bool_conversion.py
print(bool(5)) # True
print(bool(0)) # False
print(bool(None)) # False
print(bool([])) # False
print(bool("Hello")) # True
print(bool("False")) # True: строка непустая
Операторы сравнения
Операторы сравнения проверяют равенство, неравенство и порядок значений. Результат всегда True или False.
| Оператор | Смысл | Пример | Результат |
|---|---|---|---|
== | равно | 5 == 5 | True |
!= | не равно | 5 != 5 | False |
> | больше | 3 > 5 | False |
< | меньше | 4 < 6 | True |
>= | больше или равно | 5 >= 5 | True |
<= | меньше или равно | 3 <= 2 | False |
Логические операторы
and требует, чтобы оба условия были истинны. or требует хотя бы одно истинное условие. not меняет значение на противоположное.
# logical_operators.py
a = 5
b = 10
print(a > 0 and b > 0) # True
print(a > 10 or b > 0) # True
print(not a > 3) # False
Приоритет логических операторов
Если скобок нет, Python выполняет логические операторы в таком порядке: not, затем and, затем or.
# priority.py
a = True
b = True
c = True
print(not a or b and c)
# not True or True and True
# False or True
# True
Скобки меняют порядок и делают намерение кода явным.
Таблица истинности
| A | B | A and B | A or B | not A |
|---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | False |
False | True | False | True | True |
False | False | False | False | True |
Двойные неравенства
Проверку диапазона можно записать как цепочку сравнений. Запись 1 < x <= 10 эквивалентна 1 < x and x <= 10, но читается короче.
# chained_comparisons.py
x = 5
print(1 < x <= 10) # True
print(1 < x and x <= 10) # True