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