Что выведет: `def f(lst=[]): lst.append(1); return lst; print(f(), f(), f())`?
Pythonmediummiddle
Проверяет знание Python и pandas для анализа данных.
mutable-defaultsgotchapython
Варианты ответа
[1] [2] [3] — Python автоматически конвертирует mutable default в immutable tuple при определении функции и каждый вызов работает с независимой копией данных
[1] [1, 1] [1, 1, 1] — mutable default аргумент создаётся ОДИН раз при def, потом переиспользуется. Это классическая ловушка, фикс через lst=None и lst = [] внутри функции
[1] [1] [1] — каждый вызов получает свежий пустой список как default аргумент. Это стандартное поведение, mutable defaults работают как ожидается у любого новичка
TypeError на третьем вызове — Python детектит mutation default и поднимает исключение. Чтобы изменить — надо явно передать lst=[] при каждом вызове функции
Как разобрать этот вопрос на собеседовании
Подумай, какая структура данных и какой инструмент pandas решают задачу с наименьшей сложностью: векторизация вместо циклов, groupby/merge вместо ручных склеек, корректная работа с NaN и типами. Интервьюер смотрит на читаемость кода и на то, понимаешь ли ты, что происходит «под капотом» — копия или вью, сложность операции, утечки памяти на больших данных.
На собеседовании по такому вопросу важно не только назвать ответ, но и кратко объяснить, почему он верный.
Тема вопроса — «Python». Чтобы подготовиться к похожим задачам, отрабатывай их на практике: python-тренажёр помогает довести навык до автоматизма, а раздел вопросов — увидеть формулировки, которые реально встречаются на интервью аналитика данных.
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
3000+ вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.