При единственном показанном вызове будет выведено [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] корректен.