本文旨在浅略分析一下Python数据在内存中存储的方式
a=[1,2,3,[4,5,6]]
b=a
print(b)
print(id(a),id(b)) #id()用于观察变量的内存地址,这里可以发现a,b列表的内存地址一样
初步结论,在python系统中,存放在内存中的时变量的值,而不是变量本身,如果变量的值相同,则两个变量的内存地址一直,当一个变量的值发生改变时,另一个值与他相等的变量在输出时,该变量也会发生改变。
from copy import *
a=[1,2,3,[4,5,6]]
b=a
c=copy(a)
d=deepcopy(a)
print(a,"a的内存地址",id(a))
print(b,"b的内存地址",id(b))
print(c,"c的内存地址",id(c))
print(d,"d的内存地址",id(d))
print("<-------------------------------------->")
print(" a[0]的内存地址",id(a[0]))
print(" copy所得c[0]的内存地址",id(c[0]))
print("deepcopy所得d[0]的内存地址",id(d[0]))
print(" a[3]的内存地址",id(a[3]))
print(" copy所得c[3]的内存地址",id(c[3]))
print("deepcopy所得d[3]的内存地址",id(d[3]))
print(" a[3][0]的内存地址",id(a[3][0]))
print(" copy所得c[3][0]的内存地址",id(c[3][0]