python数据类型可变不可变知识点总结

  • Post category:Python

当我们使用 Python 编程时,经常会遇到可变数据类型和不可变数据类型的概念。在 Python 中,所有数据类型都可以分为可变和不可变两类。

什么是Python的可变数据类型和不可变数据类型?

Python 中的可变数据类型是指数据在内存中的值可以被修改,而不会改变它的地址。Python 中的不可变数据类型是指其值在内存中不可被修改,如需修改需重新分配内存空间。

Python 中的不可变数据类型包括:数字、字符串、元组;

Python 中的可变数据类型包括:列表、字典、集合等。

可变数据类型和不可变数据类型的特点

不可变数据类型

对于不可变数据类型,如果修改其对象的值,Python 会重新为该对象分配内存空间,并将新值保存在新的内存空间中。这也就意味着,对于不可变数据类型的修改操作无法实现原地修改,而是需要重新指定一个新变量名称替换原变量。

示例1:字符串变量的不可变性质

str1 = "hello"
str2 = str1
str1 = "world"
print(str1)   # 输出 "world"
print(str2)   # 输出 "hello"

示例2:元组变量的不可变性质

tup1 = ('a', 'b', 'c')
tup2 = tup1
tup1 = (1, 2, 3)
print(tup1)   # 输出 (1, 2, 3)
print(tup2)   # 输出 ('a', 'b', 'c')

可变数据类型

对于可变数据类型,如果修改其对象的值,Python 会直接在原有的内存空间中修改该对象,并且不会为该对象重新分配内存空间。

示例1:列表变量的可变性质

lst1 = [1, 2 ,3]
lst2 = lst1
lst1[0] = 0
print(lst1)   # 输出 [0, 2 ,3]
print(lst2)   # 输出 [0, 2 ,3]

示例2:字典变量的可变性质

dict1 = {'a':1, 'b':2, 'c':3}
dict2 = dict1
dict1['a'] = 0
print(dict1)   # 输出 {'a': 0, 'b': 2, 'c': 3}
print(dict2)   # 输出 {'a': 0, 'b': 2, 'c': 3}

总结

从上述示例可以看出,对于不可变数据类型,修改其对象的值会创建一个新的对象并修改指针,而原有的对象不会改变;对于可变数据类型,修改其对象的值会直接在原有的对象上进行修改。因此在代码编写过程中,应该尽可能地使用不可变数据类型,以免出现意外的错误。