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  # 可以看到列表的地址并未改变,所以列表是可变数据类型。

详情请参照大佬博客 https://www.cnblogs.com/lfpython/p/7207747.html

posted @ 2019-03-23 02:24  大白驴&#129315;  阅读(202)  评论(0编辑  收藏  举报