【问题标题】:New name with same or new list? [duplicate]具有相同或新列表的新名称? [复制]
【发布时间】:2019-10-09 05:35:03
【问题描述】:

如果我有x=['f', 1],那么module.x = x,module.x 会引用x,还是会创建一个新列表来引用x 列表中的对象?如果你得到我的问题。这就像描绘 Python 的执行方式一样。

【问题讨论】:

  • 什么是module?请给出一个完整的最小示例。
  • 简短答案是 module.x 引用 x。换句话说,如果你更改x,它也会更改module.x
  • @DYZ,我认为他/她的意思是一个对象的成员变量

标签: python list object reference


【解决方案1】:

当我们这样做时:

x = ['f', 1]
  1. 它创建一个列表。
  2. x 被分配为 reference

当我们这样做时:

module.x = x

module.x 被分配了相同的引用。

因此,not 创建了一个新列表。


运行这段代码可以清楚地理解它:

class Temp:
    def __init__(self):
        self.x = None

x = ['f', 1]
print(id(x))    

temp = Temp()
temp.x = x

print(id(temp.x))

assert id(x) == id(temp.x)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2015-05-22
    • 2021-07-15
    • 2022-01-08
    • 2011-12-12
    相关资源
    最近更新 更多