首页 > 解决方案 > 可散列和不可变之间有什么区别?

问题描述

标签: pythonimmutabilityhashable

解决方案


散列是一些散列算法对一大块数据的应用;通常是一种将其压缩为可在哈希查找表中搜索的小得多的值的方法。散列的一些示例包括MD5SHA-2

一些散列在产生冲突时被认为是“失效的”——这意味着两个非常不同的数据会产生相同的“压缩”字符串或整数。MD5 已失效,因为存在冲突,但大多数 SHA-2 变体没有。

不变性是确保某些东西不会改变的过程。例如,想象一个 C 程序的静态二进制文件。一旦将其发布到万维网或最终用户,您不希望其内容发生变化,因此您希望它是不可变的。

这与散列有关。一旦你“散列”了一个对象,你就不希望它的内容改变,否则你会得到一个不同的散列。如果你改变了内容并且哈希没有改变,那么你就会发生冲突!

元组只是一种数据结构,应该是不可变的和可散列的。如果您在执行此操作时遇到问题,则可能是代码问题。


推荐阅读