python中的不可变数据类型与可变数据类型详解 您所在的位置:网站首页 python中不可更改的对象 python中的不可变数据类型与可变数据类型详解

python中的不可变数据类型与可变数据类型详解

2024-07-17 07:58| 来源: 网络整理| 查看: 265

Python中的不可变数据类型与可变数据类型详解

Python中的数据类型分为两类:不可变(Immutable)和可变(Mutable)。不可变类型的值在创建后不能修改,当尝试修改时,Python会创建一个新的对象并返回新对象引用,而不是修改原对象。而可变类型的值是可以修改的,原对象的引用不会变。

以下是常见的Python中的不可变数据类型和可变数据类型:

不可变数据类型 整型(int)

整型是最常见的不可变数据类型。整型在Python中表示整数,例如:

x = 5

上面的代码创建了一个整型变量,并将值赋为5。如果我们尝试修改它:

x = 10

这并不是修改了整数变量的值,而是创建了一个新的整型变量,其值为10,并将这个新的引用赋值给x。原始的整数变量被保留在内存中。

字符串(str)

字符串也是不可变的。字符串一旦被创建,它的值就不能被更改。例如:

s = 'hello'

我们可以对字符串进行索引操作,但不能更改它:

print(s[0]) # Output: 'h' s[0] = 'a' # TypeError: 'str' object does not support item assignment

Python会抛出TypeError异常,因为字符串是不可变的。如果我们想要改变字符串,我们需要创建一个新的字符串对象。

元组(tuple)

元组也是不可变的。一旦创建了元组,就不能修改它的值或者元素。例如:

t = (1, 2, 3)

元组的元素可以通过索引访问,但不能更改它们的值:

print(t[0]) # Output: 1 t[0] = 4 # TypeError: 'tuple' object does not support item assignment 不可变集合(frozenset)

不可变集合(frozenset)同样是不可变的,一旦创建就不能修改。例如:

fs = frozenset([1, 2, 3])

我们可以通过索引操作访问不可变集合的元素,但不能进行修改:

print(fs[0]) # Output: TypeError: 'frozenset' object does not support indexing fs.add(4) # AttributeError: 'frozenset' object has no attribute 'add'

尝试对不可变集合进行修改会抛出类似TypeError和AttributeError的错误。

可变数据类型 列表(list)

列表(list)是最常见的可变数据类型之一。与不可变类型不同的是,列表的值可以进行修改。例如:

lst = [1, 2, 3]

我们可以使用索引来访问列表的值,也可以使用索引来修改它们:

print(lst[0]) # Output: 1 lst[0] = 4 print(lst) # Output: [4, 2, 3] 字典(dict)

字典(dict)也是一种可变类型,可以添加、修改或删除其中的键值对。例如:

dict = {'a': 1, 'b': 2}

在字典中,我们可以使用键来查找和更改值:

print(dict['a']) # Output: 1 dict['a'] = 3 print(dict) # Output: {'a': 3, 'b': 2} 总结

不可变类型的值在创建后就不能被更改,而可变类型的值是可以修改的。在编写程序时,需要根据需要选择适当的数据类型,并注意如何将它们传递给函数和修改其中的值。

在Python中,不可变数据类型包括int、str、tuple和frozenset;可变数据类型包括list和dict。

示例:

# Example1 - 可变类型 lst = [1, 2, 3] def func(list): list[0] = 4 func(lst) print(lst) # Output: [4, 2, 3] # Example2 - 不可变类型 a = 5 b = a a += 2 print(b) # Output: 5

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的不可变数据类型与可变数据类型详解 - Python技术站



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有