Python的元组被设计成不可变的影响

来源:互联网 发布:光子 知乎 编辑:程序博客网 时间:2024/05/22 08:06

实际上元组是跟列表非常相近的另一种容器类型,元组和列表看起来不同的一点是元组用的是圆括号而列表用的是方括号。而功能上,元组和列表相比有一个很重要的区别,元组是一种不可变类型。正是因为这个原因元组能做一些列表不能做的事情……用做一个字典的Key。另外当处理一组对象时,这个组默认就是元组类型

不可变性给元组带来了什么影响:

在3个标准不可变类型里面—–数字、字符串、元组——元组是受影响最大的,一个数据类型是不可变的,简单来讲,就意味着一旦一个对象被定义了,它的值就不能再被更新,除非重新创建一个新的对象。对数字和字符串影响不是很大,因为它们是标量类型,当它们代表的值改变时,这种结果是有意义的,是按照你所想要的方式进行访问的。而对于元组,事情就不是这样了。
因为元组是容器对象,很多时候你想改变的只是这个容器中的一个或者多个元素。不幸的是这是不可能的,切片操作符不能用作左值进行赋值。这和字符串没什么不同,切片操作只能用于只读的操作。
不可变并不是坏事,比如我们把数据传给一个不了解的API时,可以确保我们的数据不会被修改。同样地,如果我们操作一个从函数返回的元组,可以通过内建List()函数把它转换成一个列表。

原创粉丝点击