Просмотреть Python documentation, раздел Проверка значения истины в соответствии с встроенными типами стандартной библиотеки Python. Первое предложение, а первое предложение после последнего пункта указывает ответ на ваш вопрос.
Любой объект может быть проверен на значение истинности ...
и
Все остальные значения считаются истинно - так объекты многих типов всегда верно.
Вот полный текст документации, (содержание в скобках, []
, добавляют в качестве увеличения):
5.1. Проверка значения истины
Любой объект может быть проверен на значение истины, для использования в условии if или while или в качестве операнда булевых операций ниже. Следующие значения считаются ложными:
None
False
ноль любого числового типа, например, 0
, 0L
, 0.0
, 0j
.
любая пустая последовательность, например, ''
, ()
, []
.
любое пустое картографирование, например, {}
.
экземпляры классов, определенных пользователем, если класс определяет __bool__()
[__nonzero__()
в Python 2] или __len__()
метод, когда этот метод возвращает значение False
целое число ноль или BOOL.[См модель данных, специальный метод имена, раздел Basic Customization, питон Language Reference]
Все остальные значения считаются истинно - так объекты многих типов всегда верно.
Операции и встроенные функции, имеющие логический результат всегда возвращения 0
или False
за ложные и 1
или True
для истинно, если иное не указано . (Важное исключение:. Булевы операции or
и and
всегда возвращение один из операндов)
Заключение
Так с Exception
не имеет __bool__
, __nonzero__
или __len__
, (и не подпадают под другие условия, перечисленные выше) объект Exception
всегда будет тестироваться как True
в булевом контексте.
Ну это был мой ответ, и я не понимал, что его всегда _True._ – GLHF
Это действительно интересно, я не знал об этом – Crispy
я удалил ответ, Im получение downvotes из-за этого :-) – GLHF