这个问题已经在这里有了答案:




9年前关闭。






哪些较低层的设计使元组在Python中不可变?为什么此功能有用?

最佳答案

原因如下:

  • 像列表这样的可变对象不能用作字典键或Python中的set成员,因为它们不是hashable。如果根据列表的内容为列表提供了__hash__方法,则返回的值可能会随着内容的更改而更改,这违反了哈希值的约定。
  • 如果Python仅具有可变序列,则接受序列的构造函数通常需要复制它们,以确保不能被其他代码修改。构造函数可以仅接受元组来避免防御性复制。更好的是,它们可以通过tuple方法传递序列参数,该方法仅在必要时复制。
  • 10-04 21:56
    查看更多