关于python中对np.array数据进行元素操作的讨论(形参与实参)
最近发现了python中,如果将np.array(ndarray)类型的数据作为实参,传递给形参时,实参和形参会同时改变。
例如下面的代码:
import numpy as np
num=np.array([[1,2],[3,4]])
def test(a):
a[0,1] = 9
print(a)
test(num)
print(num)
输出结果:
[[1 9]
[3 4]]
[[1 9]
[3 4]]
会发现实参num和形参a都发生了改变。这就很奇怪了,超出了我的认知。
调研了一下,发现是【可变数据类型】和【不可变数据类型】的关系
在 Python 中,数据类型可以分为可变(Mutable)和不可变(Immutable)两种类型。可变数据类型指的是对象在创建后可以修改其内容,而不改变其标识(在内存中的位置)。不可变数据类型则是指对象一旦创建后,其内容就不能再被修改,如果需要修改,只能创建一个新的对象。
需要注意的是,Python 中的整数和字符串等简单数据类型是不可变的,而像列表、字典和NumPy数组这样的复杂数据类型是可变的。