Глава 9 · Выполняй мою команду!
Truthiness и None
Условию не всегда нужно явное сравнение — Python умеет спросить о любом значении, истинно оно или ложно.
Условию не всегда нужно явное сравнение
Мы уже видели в главе 8: пустая строка ведёт себя как False,
а непустая — как True. Это работает не только для строк —
Python умеет спросить о ЛЮБОМ значении: «ведёшь ли ты себя как истина или как ложь?» Это
называется truthiness («истинностью») значения.
Falsy — значения, которые ведут себя как False
| Значение | bool(...) | Почему |
|---|---|---|
False | False | уже ложь |
None | False | «здесь нет значения» |
0, 0.0 | False | ноль считается ложью |
"" | False | пустая строка |
[], {} | False | пустые коллекции — подробно изучим позже |
Truthy — почти всё остальное
| Значение | bool(...) | Почему |
|---|---|---|
True | True | уже истина |
-10, 1, 42 | True | любое ненулевое число |
"нет", "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, без установки