and и or вычисляют операнды слева направо и останавливаются, когда результат уже определён. Они возвращают один из операндов, а не обязательно True или False.
Как работает ленивое вычисление логических выражений?
and и or вычисляют операнды слева направо и останавливаются, когда результат уже определён. Они возвращают один из операндов, а не обязательно True или False.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
and и or вычисляют операнды слева направо и останавливаются, когда результат уже определён. Они возвращают один из операндов, а не обязательно True или False.
a and b возвращает a, если оно ложно, иначе вычисляет и возвращает b. a or b возвращает a, если оно истинно, иначе b. Поэтому obj is not None and obj.ready не обращается к атрибуту у None. Но value or default заменит также допустимые 0 и пустую строку; если важен только None, проверяйте его явно.