Первые вызовы вернут 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.