Вычисление логических выражений в 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
наконец, ибо есть, только истина или ложь сами по себе.