Оценка булевых выражений в Python - PullRequest
10 голосов
/ 21 сентября 2009

Какое значение истинности оценивают объекты в Python?

Смежные вопросы

Ответы [ 2 ]

19 голосов
/ 21 сентября 2009

Любой объект может быть проверен на правду значение, для использования в if или while условие или как операнд логического операции ниже. Следующие значения считаются ложными:

  • нет

  • Ложная

  • ноль любого числового типа, например, 0, 0L, 0.0, 0j.

  • любая пустая последовательность, например, '', (), [].

  • любое пустое отображение, например, {}.

  • экземпляры пользовательских классов, если класс определяет метод __nonzero__() или __len__(), когда этот метод возвращает целочисленный ноль или логическое значение False.

Все остальные значения считаются истинными - поэтому объекты многих типов всегда верны. Операции и встроенные функции, имеющие логический результат, всегда возвращают 0 или False для false и 1 или True для true, если не указано иное. (Важное исключение: логические операции «или» и «и» всегда возвращают один из своих операндов.)

https://docs.python.org/2/library/stdtypes.html#truth-value-testing

И, как уже упоминалось, вы можете переопределить пользовательские объекты, изменив ненулевое значение.

9 голосов
/ 21 сентября 2009

Обновление : удалены все дубликаты информации в сообщении Медера

Для пользовательских объектов в Python <3.0 <code>__nonzero__, чтобы изменить способ его оценки. В Python 3.0 это __bool__ ( Reference от e-sat)

Важно понимать, что подразумевается под оценкой. Одно из значений заключается в том, что объект явно приводится к типу bool или неявно приводится по своему расположению (в цикле if или while).

Еще одна == оценка. 1 == True, 0 == False, ничто иное не равно через ==.

>>> None==False
False
>>> 1==True
True
>>> 0==False
True
>>> 2==False
False
>>> 2==True
False

Наконец, для is is, только True или False сами по себе.

...