首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解两次连续赋值“`cur = dummy =Node(7)”或“a=b=Node(7)”?

如何理解两次连续赋值“`cur = dummy =Node(7)”或“a=b=Node(7)”?
EN

Stack Overflow用户
提问于 2019-03-22 06:31:04
回答 1查看 44关注 0票数 0

以下是我的四条代码:

代码语言:javascript
复制
# 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:“0x00000000004CD15C0”是否代表存储空间的物理地址?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 06:54:15

我会尽量简单地解释。

A1:cur是一个变量名,它指向内存中的对象Nodedummy也是如此,它是一个指向内存中的对象的指针。

A2:由于您正在执行cur = dummy = Node(7),所以您将内存中相同的对象分配给这两个变量。因此,当它发生变化时,指向它的两个变量都会注意到这个变化。但是,由于您在步骤4中声明了两个Node对象并将它们分配给不同的变量,它们将独立地进行更改。

A3:这是驱动器上的物理内存位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55294055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档