Python会将数值如1、2、3、4预先存放在固定地址的内存中,在将数值赋值给变量时,并不给变量申请内存空间,只是给变量一个内存地址的指向(类似C的指针),变量变化时,也只改动变量的指向,如:
x =12
y = 13
printx, id(x)
printy, id(y)
y = x
printy, id(y)
x = 24
y = 25
printx, id(x)
printy, id(y)
输出为
>>>
1230661984
1330661960
1230661984
2430661696
2530661672
>>>
可以看出,x、y赋值变化是,他们指向的内存地址会变化,但是具体到某个数值对应的地址不变,如:数字‘12’对应的ID始终为‘30661984’
——————————————
另一个示例程序:deepcopy() 和 [:]
#coding:utf-8
a = [1, 2, 3]
b = a
a.append(4)
print id(a), a, id(b), b
#若不想a,b的ID相同,可使用deepcopy()或者[:]
from copy import deepcopy
a = [1, 2, 3]
b = deepcopy(a)