一、定义

  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可以变现描述性含义。

四、小结

  个体值直接赋值的变量类型,因为其本身成一体,所以修改了值就等于是另外一个不同的值,因而这样类型的变量都为不可变类型。而容器类型的变量,因为其含多个元素,可以单独对某个元素进行增删修改处理,所以个体元素的修改只是改变了列表的值本身,没有新赋值给列表。

 

posted on 2020-01-02 05:01  焚音留香  阅读(320)  评论(0编辑  收藏  举报