Python и/или операторы возвращают значение
Я смотрел видео 2007 года на расширенном Python или понимании Python, а в 18'27 "говорящий говорит:" Как некоторые могут знать в Python and
и or
возвращает одно из двух значений, тогда как not
всегда возвращает логическое значение. "Когда это было так?
Насколько я могу судить, and
и or
также возвращают логические значения.
Ответы
Ответ 1
Операторы and
и or
возвращают один из своих операндов, а не чисто булево значение, например True
или False
:
>>> 0 or 42
42
>>> 0 and 42
0
В то время как not
всегда возвращает чисто логическое значение:
>>> not 0
True
>>> not 42
False
Ответ 2
См. эту таблицу из стандартной ссылки на библиотеку в документах Python:
![Boolean Operations]()
Ответ 3
из Документы Python:
Оператор не дает True, если его аргумент ложный, False в противном случае.
Выражение x и y сначала оценивает x; если x ложно, возвращается его значение; в противном случае y вычисляется и возвращается возвращаемое значение.
Выражение x или y сначала оценивает x; если x истинно, возвращается его значение; в противном случае y вычисляется и возвращается возвращаемое значение.
Оператор Python or
возвращает первое значение Truth-y или последнее значение и останавливается. Это очень полезно для общих назначений программирования, требующих резервных значений.
Как этот простой:
print my_list or "no values"
Это напечатает my_list
, если в нем есть что-нибудь. В противном случае он будет печатать no values
(если список пуст или это None
...).
Простой пример:
>>> my_list = []
>>> print my_list or 'no values'
no values
>>> my_list.append(1)
>>> print my_list or 'no values'
[1]
Комплимент с помощью and
, который возвращает первое значение False-y, или последнее значение, и останавливается, используется, когда вам нужен защитник, а не резерв.
Как этот:
my_list and my_list.pop()
Это полезно, поскольку вы не можете использовать list.pop
на None
или []
, которые являются общими предыдущими значениями в списках.
Простой пример:
>>> my_list = None
>>> print my_list and my_list.pop()
None
>>> my_list = [1]
>>> print my_list and my_list.pop()
1
В обоих случаях возвращались небулевые значения, и исключений не было.
Ответ 4
Нужно добавить несколько моментов в ответ @Frédéric.
вернуть один из их операндов???
Это правда, но это не логика за этим. В python число, кроме 0, считается истинным, а число 0 - ложным.
(0 и 42 → Ложь и Истина) = Ложь.
Вот почему он возвращает 0.
(0 или 42-> false или True) = 42
В этом случае оператор будет True из-за операнда 42. поэтому python возвращает операнд, который заставляет оператор быть истинным, в этом случае.