在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)) # 相同的内存地址,因为集合是可变的
通过这些示例,你可以看到不可变类型在修改时会创建新的对象,而可变类型则可以在原地修改。
网友回复