什么是不可变的?
在 Python 中,不可变指的是一个对象创建后不能被修改。因此,当需要修改一个不可变对象时,必须先创建一个新的对象。相对于可变对象,不可变对象具有更高的安全性和更佳的性能表现。
阅读更多:Python 教程
哪些 Python 类型是可变的,哪些是不可变的?
不可变类型
Python 中以下类型是不可变的:
数值类型
Python 中数字类型 int、float、complex 都是不可变的。如果想修改它们的值,需要重新创建它们。
a = 1
a += 1 # 这里相当于重新创建了一个 int 值,将其指向 a,并赋值为 2
字符串
Python 字符串是不可变的。当需要修改字符串时,需要创建一个新的字符串对象。
a = 'apple'
a[0] = 'b' # 这里会报 TypeError
元组
Python 中元组是不可变的。元组一旦创建完成后,它的值就不能被修改。
a = (1, 2, 3)
a[0] = 4 # 这里会报 TypeError
可变类型
Python 中以下类型是可变的:
列表
Python 中的列表是一种可变类型,可以修改其中的元素或者添加、删除元素。
a = [1, 2, 3]
a[0] = 4 # 可以直接修改某个元素
a.append(4) # 可以添加元素
a.remove(2) # 可以删除元素
字典
Python 中字典是一种可变类型,可以修改其中的键值对或者添加、删除键值对。
a = {'name': 'Tom', 'age': 18}
a['name'] = 'Lily' # 可以直接修改值
a['gender'] = 'female' # 可以添加键值对
del a['age'] # 可以删除键值对
集合
Python 中集合是一种可变类型,可以修改其中的元素或者添加、删除元素。
a = set([1, 2, 3])
a.add(4) # 可以添加元素
a.discard(1) # 可以删除元素
总结
不可变类型包括数值类型、字符串、元组等。这些类型一旦创建后,它的值就不能被修改,需要重新创建一个新的对象。
可变类型包括列表、字典、集合等。这些类型可以进行修改、添加、删除元素等操作。
在编写 Python 代码时,需要根据具体的需求选择合适的数据类型。如果不需要对某个数据进行修改,建议使用不可变类型,它们具有更高的安全性和更佳的性能表现。
结论
Python 中可变类型和不可变类型各有特点。我们需要根据实际需求来选择使用哪种类型,避免影响代码效率和安全性。同时,也要掌握如何正确地修改这些类型的对象,避免出现无法预料的错误。