python中,直接复制变量名只是简单的复制简单的变量地址。
import numpy as np
a = np.array([1,2,3,4])
b = a
a 和 b同时指向内存中的同一个地址空间,对a和b的操作会同时影响该数据的值。
a[1] = 123
print(b)
>>> array([ 1, 123, 3, 4])
这种赋值,可以实现数据的共享(两个线程之间的通信)。但是也要注意对一个变量赋值等操作,也会改变另一个变量的值
深拷贝、浅拷贝
如果仅想要拷贝变量的数值就需要使用copy()
和deepcopy()
函数。
对于一些简单的数据类型,如int,list等,直接使用copy()
就行。如果变量类型比较复杂,就需要使用deepcopy()
系统在内存中开辟新的空间,并将赋值的变量的数据搬过去
from copy import copy, deepcopy
import numpy as np
a = np.array([1,2,3,4])
b = copy(a)
a[1] = 123
print(b)
>>> array([1, 2, 3, 4])