Ленивое вычисление логических операторов
Во многих языках программирования поддерживается ленивое вычисление логических операторов. Ленивое вычисление означает, что если результат выражения очевиден, то дальнейшее вычисление аргументов не производится.
Например, при использовании оператора and если a = False, то вычисление b не изменит значение результата, это видно по таблице истинности конъюнкции.
a and b
Если a и b константы, то разница небольшая, но если вместо них происходит вызов функции, то ленивое вычисление может влиять как на производительность, так и на результат из-за побочных эффектов.
check() and prepare()
Аналогичным поведением может обладать оператор or, только если для end вычисление останавливается в случае есть первый аргумент равен False, то or останавливает вычисление если первый аргумент равен True. Причины так же видны из таблицы истинности конъюнкции.