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, intup[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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月09日 14时20分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
slurm
2019-04-30
xfce4
2019-04-30
xrdp
2019-04-30
Raft算法
2019-04-30
Python计算文本BLEU分数
2019-04-30
swap内存(linux)
2019-04-30
人脸au
2019-04-30
torch.distributed 分布式
2019-04-30
OpenMP编程模型(OMP)
2019-04-30
混合精度训练(FP16 & FP32)
2019-04-30
PyPy
2019-04-30
打印CSDN文章
2019-04-30
MATLAB与CUDA
2019-04-30
Linux png转jpg (convert命令)
2019-04-30
NAS (Network Attached Storage 网络附属存储)
2019-04-30
Ubuntu更新后终端中字体的颜色全是白色
2019-04-30
Ninja
2019-04-30
lmdb数据库的读取与转换(一) —— 基本操作
2019-04-30
opencv相关操作(cv2) (python)
2019-04-30
lmdb数据库的读取与转换(二) —— 数据集操作
2019-04-30