Глава 9 · Выполняй мою команду!

Truthiness и None

Условию не всегда нужно явное сравнение — Python умеет спросить о любом значении, истинно оно или ложно.

Условию не всегда нужно явное сравнение

Мы уже видели в главе 8: пустая строка ведёт себя как False, а непустая — как True. Это работает не только для строк — Python умеет спросить о ЛЮБОМ значении: «ведёшь ли ты себя как истина или как ложь?» Это называется truthiness («истинностью») значения.

Falsy — значения, которые ведут себя как False

Значениеbool(...)Почему
FalseFalseуже ложь
NoneFalse«здесь нет значения»
0, 0.0Falseноль считается ложью
""Falseпустая строка
[], {}Falseпустые коллекции — подробно изучим позже

Truthy — почти всё остальное

Значениеbool(...)Почему
TrueTrueуже истина
-10, 1, 42Trueлюбое ненулевое число
"нет", "0", "False"Trueлюбая непустая строка — даже такая!
truthiness.py
print(bool(0))        # False
print(bool(1))        # True
print(bool(-10))      # True — отрицательное тоже не ноль!
print(bool(""))       # False
print(bool("False"))  # True — это непустая СТРОКА, а не значение False
print(bool("0"))      # True — тоже непустая строка
Текст "False" — это не значение False!
bool("False") равно True, потому что строка "False" состоит из пяти символов — она непустая, а значит truthy. То же самое с "0": это текст из одного символа, а не число ноль.

None — «здесь нет значения»

None — особое значение, означающее примерно «здесь нет значения» (а не 0, не False и не пустая строка):

none.py
value = None

print(value is None)       # True
print(bool(value))          # False — None тоже falsy
print(value == 0)           # False — None это не 0
print(value == "")          # False — None это не пустая строка

Обратите внимание на оператор is вместо == — к разнице между ними мы вернёмся в разделе 9.17.

Практика: truthiness и None
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →