python 没有同 cpp 一样的指针地址,所以使用起来其实蛮简单的
int, string, tuple不可变类型
i = 9
str = 'te'
print(id(i), id(str))
j = i
str2 = str
print(id(j),id(str2))
94728568118848 139677717183600
94728568118848 139677717183600
可以看出,python对普通变量的处理,是直接将引用的物理地址赋值给另一个变量
如果修改其中的值,则该类型变量会重新分配空间,
str = '111'
print(id(str))
str2 = str
str2 = '222'
print(f'str={str},str2={str2}')
print(id(str), id(str2))
139737600922096
str=111,str2=222
139737600922096 139737601153136
dict, list 可变类型
该类型略有不同。举例说 a = [1,2] 列表,内存有“两层”地址,一层针对 a 通过id(a) 查看,另一层针对值 通过id(a[0]) 查看——
我况且暂称为这是“二级地址”
而我们使用简单的 y = a 这样的赋值语句的时候,python会直接赋值一级地址,使得 id(y)&