Определение функции само ничего не печатает. При вызове some_func() обе строки будут [100, 20, 3]: имена list_a и list_b указывают на один список.
Что будет выведено при изменении списка, используемого через несколько переменных в Python
Определение функции само ничего не печатает. При вызове some_func() обе строки будут [100, 20, 3]: имена list_a и list_b указывают на один список.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какие значения будут напечатаны для переменной list_a и переменной list_b после выполнения кода ниже.
def some_func():
list_a = [1, 2, 3]
list_b = list_a
list_a[0] = 100
list_b[1] = 20
print(list_a)
print(list_b)
Ответ
Определение функции само ничего не печатает. При вызове some_func() обе строки будут [100, 20, 3]: имена list_a и list_b указывают на один список.
Присваивание list_b = list_a не копирует объект. Изменение индекса 0 через первое имя и индекса 1 через второе относится к одному списку. Чтобы разделить верхний уровень, до изменений используют list_a.copy(). Для вложенных изменяемых объектов поверхностная копия не обеспечивает полной независимости, но для этих целочисленных элементов достаточна.