Python的可变数据类型和不可变数据类型
第一次写博客完全不知道怎么下笔啊。。。本着对自己和对读者负责的态度,我查阅了很多大佬的博客,尽可能写的详细和准确。废话不多说,上干货。
一、什么是可变数据类型,什么是不可变数据类型。
用一句话概括:可变数据类型:value改变,id不变;不可变数据类型:value改变,id也随之改变。
(一)不可变数据类型:整型,字符串,元组
我们先看整型:
>>> a = 3 >>> b = a >>> id(a) # 输出对象a的地址 4468094080 >>> id(b) # 输出对象b的地址 4468094080 # 可以看到a,b的地址是相同的 >>> a = 4 # 改变a的值 >>> id(a) 4468094112 # 可以发现a的地址也变了 >>> print(b) 3 >>> id(b) # 但是b的地址没有变化 4468094080
字符串和元组情况类似,这里顺便提一下元组使用上可能出现的错误,请看下面的代码:
>>> Tuple = (1,2,3) # 声明一个元组并赋值 >>> Tuple[0] # 访问元组第1个元素 1 >>> Tuple[0] = 4 # 尝试修改第一个元素 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment # 报错,提示元组对象不支持元素赋值,
(二)可变数据类型:列表,字典,集合
还是用最简单的列表举个例子吧:
>>> list = [1,2,3,4,5] # 声明一个列表list >>> id(a) 4410425608 >>> list[0] = 'x' # 修改列表的value >>> print(list) ['x', 2, 3, 4, 5] # 修改成功 >>> id(list) 4410425608 # 可以看到列表的地址并未改变,所以列表是可变数据类型。