result получит число 0, и print выведет 0. Пустой список считается ложным, поэтому оператор or возвращает правый операнд, не преобразуя его в bool.
Определение результата выражения с оператором or
result получит число 0, и print выведет 0. Пустой список считается ложным, поэтому оператор or возвращает правый операнд, не преобразуя его в bool.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Какое значение будет присвоено переменной result.
result = [] or 0
print(result)
Ответ
result получит число 0, и print выведет 0. Пустой список считается ложным, поэтому оператор or возвращает правый операнд, не преобразуя его в bool.
or вычисляет операнды слева направо и останавливается на первом истинном. Если такого нет, результатом остаётся последний операнд.
result = [] or 0
print(type(result)) # <class 'int'>
Здесь оба операнда ложны, но значение результата — именно 0, а не объект False. Если заменить правую часть на непустую строку, результатом станет эта строка. Для получения булева значения явно вызывают bool(...).