检查 Python 中是否存在对象 ID

Check if an object id exists in Python

简单:我有一个 Python 对象 ID,我想检查是否有具有该 ID 的对象。

this SO answer 开始,您可以使用

通过 id 获取现有对象
import ctypes
a = 10
object_id = id(a)
ctypes.cast(object_id, ctypes.py_object).value

但是当用任意 object_id 调用时它会挂起,所以这是一个不切实际的解决方案。

为此,您需要详尽枚举所有 Python 对象。否则,无法区分对象和恰好看起来像对象的内存区域。

遗憾的是,没有如此详尽的清单。最接近的可能是 gc.get_objects(),其中 returns 垃圾收集器跟踪的所有对象的列表(不包括列表本身)。您可以在其中搜索与您的 ID 匹配的对象,但 x = 1; print x in gc.get_objects() 之类的内容将找不到该对象。