首页 > 解决方案 > 具有相同或新列表的新名称?

问题描述

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

标签: pythonlistobjectreference

解决方案


当我们这样做时:

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)

推荐阅读