Какой результат выведет программа при добавлении элемента в список?

При единственном показанном вызове будет выведено [1]. Но список по умолчанию общий для последующих вызовов без my_list.

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

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

При единственном показанном вызове будет выведено [1]. Но список по умолчанию общий для последующих вызовов без my_list.

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

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

Условие

Какой вывод появится в консоли после выполнения следующего кода? Функция принимает элемент и помещает его в список, при этом список имеет значение по умолчанию.


def add_item_to_list(item, my_list=[]):
    my_list.append(item)
    return my_list
print(add_item_to_list(1))

Ответ

При единственном показанном вызове будет выведено [1]. Но список по умолчанию общий для последующих вызовов без my_list.

Объект [] создаётся при определении функции, а не заново при каждом обращении. Поэтому следующий вызов add_item_to_list(2) вернул бы [1, 2].

def add_item_to_list(item, my_list=None):
    if my_list is None:
        my_list = []
    my_list.append(item)
    return my_list

Так независимые вызовы получают независимые списки. Явно переданный список по-прежнему изменяется на месте. Важно не приписывать первому вызову ошибочный результат: проблема общего состояния проявляется при повторных обращениях, а показанный вывод [1] корректен.

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

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

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

Подробнее