这个问题在这里已经有答案:
Python assigning multiple variables to same value? list behavior(12个答案)
21天前关门了。
在Python中初始化多个变量时,似乎每个变量都是不同的(即不是引用):
>>>x = y = z = 6
>>>x=5
>>>y=0
>>>print(x,y,z)
>>>5 0 6
但当我使用数值数组时,每个变量实际上都是一个引用:
import numpy as np
x = y = z = 6*np.ones(1)
x[0] = 5
y[0] = 0
print(x,y,z)
[0.] [0.] [0.]
为什么我会看到这种不同?
2条答案
按热度按时间oxcyiej71#
这归根结底是类型的不同。整数不是通过引用传递的,因此每个变量都有自己的数字副本。但是,如果你看一个不同的对象,比如一个列表:
这也是通过引用传递的,因此它们都一起更改。
字符串和整数是我能想到的主要例子,你是值,而其他所有东西(我认为)都是引用。
与此相关的有趣之处在于:就地操作对字符串和整数的行为不同于其他对象。例如:
的行为不同于
您可以看到,在第一个示例中,一个新对象现在被赋给了x变量,而在第二个示例中,y变量是同一个对象。
t3psigkw2#
您需要复制以下内容:
输出: