可能重复:
Python: Get object by id
我有一个查询,即 在python中,如果我们尝试这个
>>>a=5
>>>id(a)
>>>746363
我们正在获取id,它相当于地址, 我的疑问是,有任何方法 从id中获取值或对象,就像我们从对象中获取id
一样如下所示,
>>>object(746363)
>>>5
我写了上面的内容以清楚地传达我的问题
答案 0 :(得分:1)
首先,返回内存地址的id()是CPython实现细节,Python不保证它会继续以这种方式工作。所以你应该重新考虑它并寻求更多的pythonic方法。
Python没有公开任何“好”API来执行此操作,但您可以使用ctypes模块访问任何内存点。 this page的示例:
import ctypes
class PyTypeObject(ctypes.Structure):
_fields_ = ("ob_refcnt", ctypes.c_int), ("ob_type", ctypes.c_void_p), \
("ob_size", ctypes.c_int), ("tp_name", ctypes.c_char_p)
class PyObject(ctypes.Structure):
_fields_ = ("ob_refcnt", ctypes.c_int), ("ob_type", ctypes.POINTER(PyTypeObject))
PyObjectPtr = ctypes.POINTER(PyObject)
print ctypes.cast(id("test"), PyObjectPtr).contents.ob_type.contents.tp_name