Python 如何理解两次连续赋值'cur=dummy=Node(7)`或'a=b=Node(7)`?
以下是我的四段代码:Python 如何理解两次连续赋值'cur=dummy=Node(7)`或'a=b=Node(7)`?,python,linked-list,Python,Linked List,以下是我的四段代码: # CELL-1: Node definition class Node(object): def __init__(self,val): self.val = val self.next = None # CELL-2 cur = dummy = Node(7) dummy.next = Node(5) print cur, dummy print cur.next.val # CELL-3 cur = dummy = Node
# CELL-1: Node definition
class Node(object):
def __init__(self,val):
self.val = val
self.next = None
# CELL-2
cur = dummy = Node(7)
dummy.next = Node(5)
print cur, dummy
print cur.next.val
# CELL-3
cur = dummy = Node(7)
cur.next = Node(5)
print cur.next.val, dummy.next.val
print cur, dummy
# CELL-4
cur = Node(7)
dummy = Node(7)
dummy.next = Node(5)
print cur, dummy
print cur.next.val
及其产出
我对以下三个问题感到困惑:
问题1:cur是物理地址吗?还是逻辑地址?或者只是一个变量名?还有哑巴?
Q-2:在2号和3号单元格中,cur是否与dummy具有相同的物理地址,或者换句话说,为什么cur会随着dummy的改变而改变?
问题3:0x0000000004CD15C0是否表示存储空间的物理地址?
我会尽量简单地解释 A1:cur是一个变量名,它指向内存中的对象节点。dummy也是一样,它是指向内存中对象的指针 A2:因为您正在执行cur=dummy=Node7,所以您正在为这两个变量分配内存中的同一个对象。所以,当它改变时,两个指向它的变量都会注意到这个改变。但是,由于您在步骤4中声明了两个节点对象并将它们分配给不同的变量,因此它们将独立更改 A3:这是驱动器上的物理内存位置