Мне действительно интересно, как работает распределение памяти Python.
Я написал 2 кода:
1.
list = []
a = [1,2,3]
list.append(a)
a = [3,2,1]
print(list)
print(a)
2.
def change(list):
list[1] = 50
list[2] = 70
list = []
a = [1,2,3]
list.append(a)
change(a)
print(list)
print(a)
Когда я компилирую первый код, я получаюрезультат [[1,2,3]] и [3,2,1].
Однако, когда я компилирую второй код, я получаю результат [1,50,70].
В первом случае я создаю объект «а» и массив «список».Когда я добавляю свой объект «a» к массиву, массив фактически указывает на него.Затем, когда я присваиваю новый массив «a» [3,2,1], объект [1,2,3] сохраняется в массиве, а «a» указывает на новый массив [3,2,1].
Во втором случае я также создаю объект "a" и массив "list".Я добавляю «а» к массиву, и есть также указатель, который указывает на «а».Затем я вызываю метод для массива "а".После вызова функции и изменения значения элементов массив «список» по-прежнему указывает на объект «а» без создания нового экземпляра.
Может кто-нибудь объяснить мне, как это действительно работает?