python中的不可变数据类型与可变数据类型详解 | 您所在的位置:网站首页 › python中不可更改的对象 › python中的不可变数据类型与可变数据类型详解 |
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 assignmentPython会抛出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 实验室设备网 版权所有 |