python的id函数的反函数是什么?

python中id函数用于取得一个对象的内存地址:

In [154]: a = 1

In [155]: id(a)
Out[155]: 1544577248

In [156]: id(1)
Out[156]: 1544577248

好,问个我也不知道有什么用的问题:
现在知道了id(?) = 1544577248
有什么函数可以
foo(1544577248) = 1
取得1544577248这个地址的值为1

那么foo函数是什么?在python中

阅读 5.6k
2 个回答

python官方库中没有,因为你并不能知道内存地址处存储的对象是什么类型的,对于一切都是用对象的python(底层c中的对象),仅根据一个内存地址无法判断底层c的类型

外部函数库 ctypes.cast 可以返回内存块的数据。

cast() 函数可以将一个指针实例强制转换为另一种 ctypes 类型。 cast() 接收两个参数,一个 ctypes 指针对象或者可以被转换为指针的其他类型对象,和一个 ctypes 指针类型。 返回第二个类型的一个实例,该返回实例和第一个参数指向同一片内存空间。
In [1]: import ctypes

In [2]: a = 1

In [3]: aa = id(a)

In [4]: aa
Out[4]: 4473891120

In [5]: ctypes.cast(aa, ctypes.py_object)
Out[5]: py_object(1)

In [6]: ctypes.cast(aa, ctypes.py_object).value
Out[6]: 1
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题