Как изменятся списки после вызова функций?

После удаления случайной строки 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 ещё до функций.

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

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

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

Подробнее