不可变数据类型
当变量的值发生变化,地址也会改变
本质:是变量的 引用 指向 新的内存地址
类似:户口本,结婚后,从原户口本迁出,成立新户口本,地址当然改变
可以作为字典的key
可变数据类型
当变量的值发生变化,地址不变
本质:当变量的值发生变化(即对变量进行append、+=等操作后),只是改变了变量的值,变量的 引用 没有 指向 新的内存地址
类似:班级学生名单,正常转入、转出学生,班级地址、名称不需要改变
获取内存地址
通过函数 id() 获得变量指向的内存地址
i=1
print(id(i))
i=2
print(id(i))
练习1
s='hello'
s2='hello'
print(id(s))
print(id(s2))
答案:内存地址相同,因为python做了优化,当变量的引用指向的字符串相同时,其实是指向同一个内存地址
练习2
l=['hello']
l2=['hello']
print(id(l))
print(id(l2))
答案:l和l2的地址不同,因为list是可变数据类型,所以必须分配两个地址