После удаления случайной строки python вывод будет [123, 2, 3] и [1, 2, 3]. Первая функция меняет объект, вторая лишь перепривязывает локальное имя.
Как изменятся списки после вызова функций?
После удаления случайной строки python вывод будет [123, 2, 3] и [1, 2, 3]. Первая функция меняет объект, вторая лишь перепривязывает локальное имя.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой вывод появится в консоли после выполнения следующего кода. Функции работают со списками по‑разному.
python
def modify_first(lst):
lst[0] = 123
def reassign(lst):
lst = [4, 5, 6]
list_a = [1, 2, 3]
list_b = [1, 2, 3]
modify_first(list_a)
print(list_a)
reassign(list_b)
print(list_b)
Ответ
После удаления случайной строки python вывод будет [123, 2, 3] и [1, 2, 3]. Первая функция меняет объект, вторая лишь перепривязывает локальное имя.
modify_first выполняет присваивание элементу переданного списка, поэтому изменение видно вызывающему коду. В reassign создаётся другой список, но только локальная переменная lst начинает ссылаться на него.
[123, 2, 3]
[1, 2, 3]
Если нужно заменить содержимое исходного списка, используйте lst[:] = [4, 5, 6]. Если нужен новый объект, верните его и явно присвойте результат снаружи. Отдельная строка python внутри приведённого блока не является синтаксисом объявления языка: при буквальном запуске без такого имени она вызовет NameError ещё до функций.