2010-11-09 2 views
4

Может кто-нибудь объяснить рассуждения следующих тестов?boolean 'and' in Python

>>> 1 and True 
True 
>>> {'foo': 'Foo'} and True 
True 
>>> {} and True 
{} 
>>> 
+0

Связанный вопрос: http://stackoverflow.com/questions/3826473/boolean-operations-in-python-ie-the-and-or-operators – tzot

ответ

5

В контексте булевых операций, а также когда выражения используются операторами управления потоком, следующие значения интерпретируются как ложные: False, None, numeric zero всех типов и пустые строки и контейнеры (включая строки, кортежи , списки, словари, наборы и фризоздаты). Все остальные значения интерпретируются как истинные.

Выражение x и y сначала оценивает x; если x ложно, возвращается его значение; в противном случае y вычисляется и возвращается возвращаемое значение.

Выражение x или y сначала оценивает x; если x истинно, возвращается его значение; в противном случае y вычисляется и возвращается возвращаемое значение.

Для дальнейшей ссылки далее на булевых операциях: http://docs.python.org/reference/expressions.html#boolean-operations

8

Python не имеют булевой и или логическое или. Операторы и or являются , коалесцирующие, что означает, что они возвращают первый неверный или истинный операнд или второй операнд.