你能用Python澄清这个引用问题吗?

2024-06-28 20:29:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经习惯了指针和引用,但我需要澄清一下这一点:

我的节点类中有以下方法:

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类中的节点列表中。在node类中调用graph.addNode()之后,newNode变量的作用域何时停止存在

附加到Graph类中的列表中的数据现在不是无效的吗? append()是否生成所传递对象的新副本?你能给我解释一下吗

(在本例中,图形仅包含节点列表,而节点实际上是一个包含详细信息的字典。)


Tags: the函数selfnode列表节点defgraph
1条回答
网友
1楼 · 发布于 2024-06-28 20:29:48

名称newNode超出范围,但它引用的对象没有被销毁。您通过将该对象附加到nodeList来添加对该对象的另一个引用append不会创建副本,但会创建对同一对象的单独引用。一个名称在它所在的函数结束时会超出作用域,但是一个对象只有在所有引用都消失时才会被垃圾收集

相关问题 更多 >