python对象的可设计理由是什么,而不是python dicts / lists?

时间:2018-03-02 13:18:03

标签: python

Python dicts / lists不是可散列的,而是python对象。这对我来说似乎很奇怪,特别是因为python dicts和python对象在可变性的观点上几乎相同。

我有几个理论:

  • 两个dicts可以相等而不具有相同的id,并且python强制相等的实例必须具有相同的哈希。默认情况下,对象不会出现此行为,但如果__eq__被覆盖
  • 则可以
  • dicts和list旨在进行变异。让它们在变异之前和之后散列到相同的值是一个脚枪

这种语言功能的设计理由是什么?

评论更新: https://docs.python.org/3/glossary.html#term-hashable

这解释了为什么 dicts / lists无法自动播放

  

比较相等的Hashable对象必须具有相同的哈希值。

但为什么决定这条规则?

1 个答案:

答案 0 :(得分:2)

article解释了可出现和平等问题。 一般来说,我会说保留默认对象可以使用的决定是因为它涵盖了更多的案例并且仍然相当便宜。对dicts和list执行相同操作时,大多数情况下都会产生意外结果。