可能重复:
为什么在 Python 中字符串和元组是不可变的? Python 中哪些底层设计使得元组不可变?为什么这个特性很有用?
为什么在 Python 中字符串和元组是不可变的? Python 中哪些底层设计使得元组不可变?为什么这个特性很有用?
几点原因:
__hash__
方法,则返回的值可能会随着内容的更改而更改,这将违反哈希值的约定。tuple
方法传递序列参数,只有在必要时才进行复制。否则就不会有不可变序列类型了!如果你想要一个可变的元组,你只需要使用列表。
在适当的情况下使用不可变类型具有各种性能优势,如果元组是可变的,你将无法轻松地使用带有元组键的字典。
tuple(..)
会创建一个新的元组对象,从给定的可迭代对象中复制每个元素(通常是一个列表)。但是,如果参数已经是一个元组,则该元组将被返回且不会进行任何复制。 - Daniel Lubarov{[]}
这样的集合,因为Python的集合实现依赖于一致的哈希,而可变对象如列表是不可哈希的。 - Daniel Lubarov