在 Python 数据类型中,经常会把对象分为可变类型(Mutable)和不可变类型(Immutable)。核心区别就是:对象创建之后,内容能不能被修改。
不可变类型(Immutable)
定义:对象一旦创建,内容不能被修改。如果你看起来“修改”了,其实是创建了一个新的对象。常见不可变类型:
int(整数)
float(浮点数)
bool(布尔值)
str(字符串)
tuple(元组)
frozenset
可变类型(Mutable)
定义:对象创建之后,内容可以被直接修改,而不需要创建新对象。
常见可变类型:
list(列表)
dict(字典)
set(集合)
bytearray
核心区别总结
不可变类型修改会产生新对象,可变类型会直接在原对象上修改。
一个非常经典的面试题
a = [1,2,3]b = ab.append(4)print(a)
结果:
原因:
a 和 b 指向同一个列表对象
append 是修改原对象
所以 a 也变了