这章我们讲可变与不可变类型,可变与不可变类型是对我们前面学的基本数据类型,整型、浮点型、字符串类型、列表类型、字典类型以及布尔值类型,这些类型到底是可以改变海慧寺不可以改变,从这个角度怼他们进行分类。
到底什么是可变类型呢?可变类型指的是,值改变的情况下,id不变,说明改的是原值对吧,这里我们说的值是指堆区里面的内容。
然后我们再来看不可变类型,理解了前面可变类型的意思,不可变类型就简单了。就是值改变的情况下,id也改变了。
先以字符串举个例子,我先定义一个name=‘于谦’,然后再改变一下把于谦换成郭德纲,再打印出来看他们两个的id是否一样,如果不一样,那就说明字符串是不可变类型。
我们看到打印出来的两个id是完全的不一样的。所有的赋值操作,都会申请新的内存空间,产生新的值。
还有整型、浮点型、布尔值类型都是不可变类型。,它们都是不可分割的整体,不能被改变。
都可以用刚才的方法再去验证一下,这里我就不再演示了。
但是列表和字典就算你用刚刚的验证方法来看,id都是会改变的。就是容器类型有一点不一样,就那列表来说,列表里的某一个值,我们都是可以单独进行改变的。
我先定义一个列表,然后我在打印一下列表的id号,接着我把列表的1号索引的只改变一下,然后再打印列表,证明我已经改变过值了。然后继续打印列表的id号,但是两个id都是一样的。
这就说明,列表里面包含多个内存地址,我们改的只是其中意的,但是列表本身的内存地址我们没有去改变它,所以说列表是可变类型。
到这里我想你们应该明白了,列表和字典这两种容器类型就是可变类型,字典我就不去验证了,你们可以自己练习一下。
不过字典我在这里需要补充一下,前面我们说过字典是在大括号‘{}‘’内用逗号‘,’分隔多个key:value,这个value可以是任意类型的值。
但是字典的key必须是不可变类型。我们也说过字典的key我们一般情况下都是字符串类型,整型、浮点型、字符串类型甚至布尔值类型都可以当作字典的key。
这种情况基本不会发生,我们正常都不会这写字典。
未经允许不得转载:445IT之家 » Python可变和不可变类型