def function(test_list: list = []):

В этом коде используется изменяемый объект по умолчанию — список items=[], который сохраняется между вызовами функции.

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

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

В этом коде используется изменяемый объект по умолчанию — список items=[], который сохраняется между вызовами функции.

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

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

Условие

def function(test_list: list = []): test_list.append(1) print(test_list)

test_list = [] function() function(test_list) function() print(test_list)

Ответ

В этом коде используется изменяемый объект по умолчанию — список items=[], который сохраняется между вызовами функции.

Разберём вызовы:

def f(item, items=[]):
    items.append(item)
    return items

print(f(1))       # [1]
print(f(1, []))   # [1]
print(f(1))       # [1, 1]
  1. f(1) — параметр items не передан, используется дефолтный список. В него добавляется 1, возвращается [1].
  2. f(1, []) — передан новый пустой список, в него добавляется 1, возвращается [1].
  3. f(1) — снова вызывается без параметра, используется тот же дефолтный список, в который уже был добавлен 1 в первом вызове. Теперь добавляется ещё один 1, возвращается [1, 1].

Это классическая «ловушка» с изменяемыми значениями по умолчанию в Python. Чтобы избежать такого поведения, лучше использовать None и создавать новый список внутри функции:

def f(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

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

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

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

Подробнее