булево 'и' в Python

Може ли някой да обясни мотивите зад следните тестове??

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

person simplyharsh    schedule 09.11.2010    source източник
comment
Свързан въпрос: stackoverflow.com/questions/3826473/   -  person tzot    schedule 05.12.2010


Отговори (2)


В контекста на булевите операции, а също и когато изразите се използват от изрази за контролен поток, следните стойности се интерпретират като false: False, None, числова нула от всички типове и празни низове и контейнери (включително низове, кортежи, списъци, речници , набори и замразени набори). Всички други стойности се интерпретират като верни.

Изразът x и y първо изчислява x; ако x е невярно, неговата стойност се връща; в противен случай y се оценява и се връща получената стойност.

Изразът x или y първо изчислява x; ако x е вярно, неговата стойност се връща; в противен случай y се оценява и се връща получената стойност.

За допълнителна справка прочетете повече за булевите операции: http://docs.python.org/reference/expressions.html#boolean-operations

person meson10    schedule 09.11.2010

Python няма има булев и или булев или. Неговите оператори and и or са обединени, което означава, че връщат първия неверен или истински операнд или втория операнд.

person Ignacio Vazquez-Abrams    schedule 09.11.2010