使用对象内存位置作为哈希键

One*_*ece 3 python hash dictionary object python-3.x

所以我今天意识到在 Python 中我们可以使用对象内存地址位置作为字典中的键。

当位于该内存位置的对象被另一个对象替换时,python 如何防止冲突?

使用内存位置作为散列键是否存在其他风险?

wja*_*rea 5

我认为您正在谈论对象的id,而不是其内存地址本身。它们在 CPython 中是相同的,但这是一个实现细节。

\n

如果是这样,那么文档会回答您的问题:

\n
\n

id(object)

\n

返回对象的“身份”。这是一个整数,保证该对象在其生命周期内是唯一且恒定的。具有不重叠生命周期的两个对象可能具有相同的\xc2\xa0 id()\xc2\xa0值。

\n

CPython实现细节: \xc2\xa0这是对象在内存中的地址。

\n
\n

(加粗)

\n

换句话说,它不能防止碰撞。

\n