Использование логических операторов в Python без условия - PullRequest
0 голосов
/ 18 апреля 2019

Это кажется простым вопросом, но я не смог найти прецедент. Один ответ здесь указывает на это без объяснения причин.

Использование логических операторов без двух переменных возвращает не логическое значение, а одну из переменных - первая для OR и вторая для AND.

'x' or 'y'
> 'x'

3 and 4
> 4

В чем причина такого поведения?

1 Ответ

3 голосов
/ 18 апреля 2019

Причина в том, что это наиболее эффективный способ быстрого вычисления булевых выражений.С or Python возвращает первое истинное значение, которое он встречает.Не нужно оценивать остальное, чтобы узнать, верно ли выражение.Аналогично, при and Python возвращает первое значение falsy , с которым он сталкивается.Не нужно оценивать остальное, чтобы выяснить, является ли выражение ложным.

Если вас беспокоит, что вы получите не булево выражение, оберните вызов bool() вокруг вашего выражения.

...