Python 赋值时代码在内存中的操作示意图
首先内存会为3创建一个数据单元,再让b指向这个单元;然后b+5得到8,内存又会为这个8创建一个数据单元,再让b指向这个单元**(b指向的内存地址发生了改变!);**
可以简单地认为“数据在python中被称为对象(object)”,对象不能被覆盖,也不能被直接销毁(python中有垃圾回收机制来回收不用地对象,比如引用计数机制);
代码如下(示例):
import numpy as np
d= np.ones((2,2))
print('\n d:\n',d)
a= d
print('\n a:\n',a)
a[0] = a[0]+5
print('\n a:\n',a,'\n d:\n',d)
a = a*2
print('\n a:\n',a,'\n d:\n',d)
输出结果:
d:
[[1. 1.]
[1. 1.]]
a:
[[1. 1.]
[1. 1.]]
a:
[[6. 6.]
[1. 1.]]
d:
[[6. 6.]
[1. 1.]]
a:
[[12. 12.]
[ 2. 2.]]
d:
[[6. 6.]
[1. 1.]]