Что произойдёт при трёх вызовах функции со списком

Первые вызовы вернут 1 и 2, третий выбросит IndexError, потому что список пуст. Состояние items сохраняется между вызовами.

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

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

Первые вызовы вернут 1 и 2, третий выбросит IndexError, потому что список пуст. Состояние items сохраняется между вызовами.

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

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

Условие

Python-код: items=[1,2]; def take(): return items.pop(0). Функцию вызывают три раза и печатают результат каждого вызова. Что произойдёт?

Ответ

Первые вызовы вернут 1 и 2, третий выбросит IndexError, потому что список пуст. Состояние items сохраняется между вызовами.

Если отсутствие элемента ожидаемо, определите контракт: возвращать специальный результат или возбуждать доменную ошибку. Не подменяйте любой exception нулём. Pop(0) сдвигает оставшиеся элементы и имеет линейную стоимость; для очереди с частыми извлечениями слева подходит deque.

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

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

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

Подробнее