Определение результата логического выражения с пустыми объектами

a получит целое число 0, print выведет 0, а тело if не выполнится. Оператор or возвращает один из операндов, а не обязательно значение типа bool.

Короткий ответ

Что ответить на собеседовании

a получит целое число 0, print выведет 0, а тело if не выполнится. Оператор or возвращает один из операндов, а не обязательно значение типа bool.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо понять, какое значение получит переменная a и будет ли выполнено тело условия if q or w: Проверяем, попадёт ли исполнение в блок if при указанных значениях переменных.

q = []
w = 0

a = q or w

if q or w:
    pass

print(a)

Ответ

a получит целое число 0, print выведет 0, а тело if не выполнится. Оператор or возвращает один из операндов, а не обязательно значение типа bool.

Пустой список q считается ложным. Поэтому q or w вычисляет и возвращает второй операнд w, равный 0. Ноль тоже ложен, так что условие if не пропускает выполнение внутрь блока.

print(a)        # 0
print(type(a))  # <class 'int'>

При непустом q выражение вернуло бы сам список и не стало бы вычислять правый операнд. Такое короткое замыкание полезно, но его важно отличать от явного bool(q or w).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее