Можете ли вы прояснить эту проблему ссылок в Python?

Я привык к указателям и ссылкам, но мне нужно уточнить по этому поводу:

У меня есть этот метод в моем классе Node:

def createNewNode(graph): #Create New Node Dictionary newNode = {} # Fill in Details for that Node newNode['NAME'] = 'Max' newNode['AGE'] = 22 newNode['ID'] = 'DC1234SH987' #Add the Node to the Graph graph.addNode(newNode) 

Область создания newNode находится внутри функции createNewNode() . Теперь этот узел добавляется в список узлов класса Graph.

Класс Graph имеет эту функцию:

 def addNode(self, node): self.nodeList.append(node) 

Теперь функция класса Graph addNode() просто добавляет узел в список узлов в классе графа. После вызова graph.addNode() в классе узла, когда область действия переменной newNode перестает существовать?

Не будут ли данные, добавленные в список в классе Graph, недействительными? append() ли append() новую копию переданного объекта? Вы можете мне это объяснить?

(В этом примере график просто содержит список узлов, а узел на самом деле является словарем с подробными сведениями.)

Имя newNode выходит за пределы области видимости, но объект, к newNode он относится, не уничтожается. Вы добавили другую ссылку на этот объект, добавив его в nodeList . append не создает копию, но создает отдельную ссылку на тот же объект. Имя выходит за пределы области действия, когда функция, в которой она находится, заканчивается, но объектом является только сбор мусора, когда все ссылки на него исчезли.