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