我对 Python 中如何更新变量感到困惑。在下面的代码中:
x = 1.5
y = x
y += 1
print(f"x = {x}, y = {y}")
它按预期打印
x = 1.5, y = 2.5
。但是当我使用列表而不是数字时:
x = [1,2.5]
y = x
y += [-3]
print(f"x = {x}, y = {y}")
它正在打印
x = [1, 2.5, -3], y = [1, 2.5, -3]
,这似乎违反直觉。为什么更新变量对于列表和数字的作用不同?为什么它会改变 x
的值? Python 对象会发生什么?
这不仅仅是Python的情况,大多数编程语言都是这样。
当你运行这行代码时:
x = 1.5
y = x
x 的值是 1.5 保存在
y
但是当你运行这行代码时:
x = [1,2.5]
y = x
x
的值,即内存的地址,保存在y
中。
y
和x
都指向内存的同一位置。所以 y
是这个位置的新名称。现在 x 和 y 都是该位置的名称。
因此,当您将新项目添加到 y
时,您也会将新项目添加到 x
在数组和对象变量中,保存的是内存地址,而不是值本身。