在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)) # 相同的内存地址,因为集合是可变的
通过这些示例,你可以看到不可变类型在修改时会创建新的对象,而可变类型则可以在原地修改。
网友回复
threejs如何引入中文字体json?
FLUX.1 Kontext如何api调用?
腾讯混元模型广场里都是混元模型的垂直小模型,如何api调用?
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?