Python基础 - Python可变类型与不可变类型

Python可变类型与不可变类型

Posted by 王富杰 on Tuesday, January 21, 2025

一、可变与不可变类型介绍

我们前边学过了基本类型,包括整型、浮点型、字符串、列表、字典、布尔类型。可以对是否可变的维度对这些类型进行分类。可变类型指的是值发生变化的情况花,id没改变。说明改的是原值,即改变的原来的内存空间存储的值。 不可变类型指的是值改变的情况下,id也变了。即在内存中重新申请了一片内存空间存储新值,把变量名绑定到了新的内存空间,而不修改原有内存空间的值。

二、可变类型

整型、浮点型,字符串、布尔类型属于不可变类型。我们拿字符串类型进行演示:

>>> myname = 'wfj'
>>> print(id(myname))
139675785439192
>>> myname = 'wfjj'
>>> print(id(myname))
139675785439248

如示例,当改变变量的值时,字符串的内存地址也发生了变化。这说明了字符串是不可变类型。可以用同样的方式去验证整型、浮点型和布尔型。

三、不可变类型

列表和字典类型属于可变类型。这里的可变并不是指重新给变量赋值新的列表,那它的id也是会变化的。容器类型不一样的是,容器内的某一个值是可以改变的。如:

>>> l = [1, 2, 3]
>>> print(id(l))
139675785454664
>>> l[1] = 4
>>> print(id(l))
139675785454664
>>> print(l)
[1, 4, 3]

如示例所示:列表类型,单独改变列表内的某个元素,列表的内存地址并不会发生改变。只是列表内存的1号索引的内存地址发生了改变。字典也是一样的,这里就不再做验证了。

四、字典补充

在定义字典时,字典的key必须是不可变类型。一般情况下,字典的key都是字符串类型,因为key一般是对value的描述。

>>> dic = {10:'a', 3.14:'b', True:'c'}
>>> print(dic[10], dic[3.14], dic[True])
a b c

从示例可以看出,整型,浮点型,布尔类型都可以作为字典的key。

「真诚赞赏,手留余香」

WangFuJie Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付