Python中对象可变的(mutable)和不可变的(immutable)介绍

Python中对象可变的(mutable)和不可变的(immutable)介绍

Python中所有的数据都可以被视为对象。在Python中,一切皆对象,包括整数、浮点数、字符串、列表、字典等内置数据类型,也包括自定义的类和对象。

每个对象都有自己的属性和方法,可以通过点操作符来访问和调用。例如,整数对象有属性如大小、位数等,还有方法如转换为字符串、求和等。字符串对象有属性如长度、字符的索引等,还有方法如拼接、大小写转换等。

Python中的对象分为可变的(mutable)和不可变的(immutable)

Python 中每个对象(object)都有各自的标识(identity)、类型(type)和值(value)。一个对象被创建后,它的标识就绝不会改变;你可以将其理解为该对象在内存中的地址(address )。“is” 运算符可以比较两个对象的标识号是否相同;id() 函数能返回一个代表其标识的整数。

有些对象的 值 可以改变。值可以改变的对象被称为 可变的(mutable);值不可以改变的对象就被称为 不可变的(immutable)。(一个不可变容器对象如果包含对可变对象的引用,当后者的值改变时,前者的值也会改变;但是该容器仍属于不可变对象,因为它所包含的对象集是不会改变的。因此,不可变并不严格等同于值不能改变,实际含义要更微妙。) 一个对象的可变性是由其类型决定的;例如,数字、字符串和元组是不可变的,而字典和列表是可变的。https://docs.python.org/zh-cn/3/reference/datamodel.html#objects-values-and-types

可变(mutable)类型的对象可以在创建后进行修改,其值可以改变,但对象的标识(identity)保持不变。常见的可变类型包括列表(list)、字典(dict)、集合(set)等。例如,我们可以通过修改列表的元素来改变列表的值。

my_list = [1, 2, 3]

my_list[0] = 4

print(my_list)  # 输出 [4, 2, 3]

不可变(immutable)类型的对象在创建后不能被修改,任何修改操作都会返回一个新的对象。常见的不可变类型包括整数(int)、浮点数(float)、字符串(str)、元组(tuple)等。例如,我们无法直接修改字符串的某个字符,而只能通过切片和拼接等操作来创建新的字符串对象。

my_string = "Hello"

new_string = my_string + " World"

print(new_string)  # 输出 "Hello World"

需要注意的是,对象的可变性是指对象本身是否可以被修改,而不是对象所引用的变量是否可以被修改。对于不可变类型的变量,我们可以将其重新赋值为新的对象,但原始对象的值仍然保持不变。

my_string = "Hello"

my_string = my_string + " World"

print(my_string)  # 输出 "Hello World"

可变和不可变类型在内存中的存储方式和使用方法也有所不同,这会影响到对象的性能和使用方式。在编写代码时,需要根据具体需求和性能考虑使用可变或不可变类型。

猜你喜欢

转载自blog.csdn.net/cnds123/article/details/133136144