一、定义
1、不可变类型:值改变,id也变了,证明产生的是新值,没有改变原值,原值不可被修改。
2、可变类型:值改变,而id没变,证明改的是原值,原值可被修改。
二、归类
1、不可变类型:int、float、str、bool。这些类型的值都是不可分割的整体,不能被修改。
a = 10
print(id(a))
a = 11
print(id(a)) # 两次id不同,float,str,bool同理
2、可变类型:如,list,dict。这些类型可单独对其值进行修改而不是新赋值给变量名,此时变量值虽被修改,但是id没变。
l = [111,222,333]
print(id(l))
l[0] = 444
print(id(l)) # 两次id相同,dict同理
三、列表的key类型限制
key必须是不可变类型:原则上int、float、str、bool都可以,但是多用str,因为只有str可以变现描述性含义。
四、小结
个体值直接赋值的变量类型,因为其本身成一体,所以修改了值就等于是另外一个不同的值,因而这样类型的变量都为不可变类型。而容器类型的变量,因为其含多个元素,可以单独对某个元素进行增删修改处理,所以个体元素的修改只是改变了列表的值本身,没有新赋值给列表。