python中可变数据类型和不可变数据类型(详解)
发布日期:2021-06-30 10:36:44 浏览次数:3 分类:技术文章

本文共 1279 字,大约阅读时间需要 4 分钟。

看了一下网络相关文章,还是决定自己写一下,转载必须注明出处。


一、名词解释

以下所有的内容都是基于内存地址来说的。

  可变数据类型:变量引用的数据类型,在更改数值的时候,存在不开辟新内存 的行为,此数据类型为可变数据类型。

  不可变数据类型 :变量引用的数据类型,在更改数值的时候,不存在不开辟新内存 的行为,此数据类型为不可变数据类型。

在 python 中,strings, tuples, 和 numbers不可更改的对象,而 list,dict 等则是可以修改的对象。根据结论,阅读下面解析。

二、数据类型分析

1.数字

更改值,开辟新内存 

代码:

num = 1print(id(num))num = 2print(id(num))

结果: 

140706618831104140706618831136

分析:下图中红色框代表里面的内容不可更改

 

 

2.字符串

更改值,开辟新内存 

代码:

string = 'a'print(id(string))string = 'b'print(id(string))

结果:

27936956851682793695653232

 分析:

3.列表

更改值,不开辟新内存 

代码:

list = ['a','b','c','d','e','f','g']print(id(list))list[1] = 'w'print(id(list))print(list)

结果:

14901010314961490101031496['a', 'w', 'c', 'd', 'e', 'f', 'g']

分析:


更改值,开辟新内存 

代码:

list = ['a','b','c','d','e','f','g']print(id(list))list = (1,2,3,4,5,6)print(id(list))

结果:

21230719022802123073209064

分析:

 

4.元组

更改值,不开辟新内存   ——> 报错,不能修改  ——>   假设不成立

代码:

tup = ('a','b','c','d','e','f','g')print(id(tup))tup[1] = 'w'print(id(tup))print(tup)

结果:报错

2210815038744Traceback (most recent call last):  File "E:/pythonTest/test.py", line 3, in 
tup[1] = 'w'TypeError: 'tuple' object does not support item assignment

分析:


更改值,开辟新内存 

tup = ('a','b','c','d','e','f','g')print(id(tup))tup = (1,2,3,4,5,6)print(id(tup))

 结果:

24448465851122444846514920

分析:

 

5.字典

同“列表”,略

6.集合

同“列表”,略

 

转载地址:https://it-chengzi.blog.csdn.net/article/details/105779611 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python创始人为什么叫“龟叔”?
下一篇:python中remove,pop和del方法的区别(使用list举例)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月09日 14时20分55秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章