您能否在Python中阐明此引用问题? - 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()是否为传递的对象制作新副本?你能跟我解释一下吗?

(在此示例中,图仅包含节点列表,而该节点实际上是具有详细信息的字典。)

python大神给出的解决方案

名称newNode超出范围,但它所引用的对象没有被破坏。通过将对象附加到nodeList,添加了对该对象的另一个引用。 append不会复制,但是会创建对同一对象的单独引用。名称在功能结束时会超出范围,但是仅当对对象的所有引用都消失时才对对象进行垃圾回收。