在Python中,数据类型可以分为可变类型(mutable)和不可变类型(immutable)。这两种类型的主要区别在于它们的值是否可以在创建后被修改。
不可变类型(Immutable)不可变类型的对象一旦创建,其值就不能被改变。如果需要修改,实际上是创建了一个新的对象。常见的不可变类型包括:
数字类型:
int(整数)float(浮点数)complex(复数)字符串:
str(字符串)元组:
tuple(元组)冻结集合:
frozenset(冻结集合)布尔值:
bool(布尔值)可变类型(Mutable)可变类型的对象可以在创建后被修改。常见的可变类型包括:
列表:
list(列表)字典:
dict(字典)集合:
set(集合)字节数组:
bytearray(字节数组)示例以下是一些示例,展示了不可变类型和可变类型的区别:
不可变类型示例# 整数是不可变的 a = 10 print(id(a)) # 输出对象的内存地址 a = a + 1 print(id(a)) # 新的内存地址,因为整数是不可变的 # 字符串是不可变的 s = "Hello" print(id(s)) # 输出对象的内存地址 s = s + " World" print(id(s)) # 新的内存地址,因为字符串是不可变的 # 元组是不可变的 t = (1, 2, 3) print(id(t)) # 输出对象的内存地址 t = t + (4, 5) print(id(t)) # 新的内存地址,因为元组是不可变的可变类型示例
# 列表是可变的 lst = [1, 2, 3] print(id(lst)) # 输出对象的内存地址 lst.append(4) print(id(lst)) # 相同的内存地址,因为列表是可变的 # 字典是可变的 d = {"a": 1, "b": 2} print(id(d)) # 输出对象的内存地址 d["c"] = 3 print(id(d)) # 相同的内存地址,因为字典是可变的 # 集合是可变的 s = {1, 2, 3} print(id(s)) # 输出对象的内存地址 s.add(4) print(id(s)) # 相同的内存地址,因为集合是可变的
通过这些示例,你可以看到不可变类型在修改时会创建新的对象,而可变类型则可以在原地修改。
网友回复
有没有类似豆包pc端ai大模型编程代码块折叠右侧流式输出带预览的前后端代码?
nodejs有没有很快的目录爬虫和通配符文件查找库?
js如何流式输出ai的回答并折叠代码块,点击代码块右侧可预览代码?
ai大模型如何将文章转换成可视化一目了然的图片流程图图表?
大模型生成html版本的ui原型图和ppt演示文档的系统提示词怎么写?
rtsp视频直播流如何转换成websocket流在h5页面上观看?
为啥coze会开源工作流agent coze studio?
如何检测网页是通过收藏夹打开的?
python如何实现类似php的http动态脚本请求处理响应代码?
js如何实现类似php的http动态脚本请求处理响应代码?