Вычисление логических выражений в 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

наконец, ибо есть, только истина или ложь сами по себе.