Вычисление логических выражений в Python
какое значение истины оценивают объекты в Python?
Вопросы
- логическое значение объектов в Python: Обсуждение переопределения способа его оценки
2 ответов
любой объект может быть проверен на правду значение, для использования в if или while условие или как операнд логического операции ниже. Следующая ценность считаются ложными:
нет
False
ноль любого числового типа, например,
0,0L,0.0,0j.любая пустая последовательность, например,
'',(),[].любое пустое отображение, например,
{}.экземпляры пользовательских классов, если класс определяет
__nonzero__()или__len__()метод, когда этот метод возвращает целое число ноль или bool значениеFalse.все остальные значения считаются истинными -- таким образом, объекты многих типов всегда верны. Операции и встроенные функции, имеющие логический результат, всегда возвращают 0 или
Falseдля false и 1 илиTrueв true, если не указано иное. (Важное исключение: логические операции " или "и" и " всегда возвращают один из своих операндов.)
https://docs.python.org/2/library/stdtypes.html#truth-value-testing
и, как уже упоминалось, вы можете переопределить пользовательские объекты, изменив ненулевое значение.
обновление: удалены все дубликаты информации с сообщением Медера
для пользовательских объектов в Python __nonzero__ чтобы изменить способ его оценки. В Python 3.0 это __bool__ (ссылка по e-satis)
важно понять, что подразумевается под оценкой. Одно из значений - когда объект явно бросает в bool или неявно бросает его местоположение (в цикле if или while).
другой = = evalutation. 1= = True, 0= = False, ничто другое не равно via ==.
>>> None==False
False
>>> 1==True
True
>>> 0==False
True
>>> 2==False
False
>>> 2==True
False
наконец, ибо есть, только истина или ложь сами по себе.