为什么在 Python 中更新变量的工作方式不同

问题描述 投票:0回答:1

我对 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 list
1个回答
0
投票

这不仅仅是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

在数组和对象变量中,保存的是内存地址,而不是值本身。

© www.soinside.com 2019 - 2024. All rights reserved.