为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以取消引用变量ID?

是否可以取消引用变量ID?

尚方宝剑之说 2019-11-02 10:16:48
您可以取消引用从idPython中的函数检索的变量ID 吗?例如:dereference(id(a)) == a我想从学术角度了解;我了解还有更实用的方法。
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

这是一个实用程序函数,该函数基于“ Tiran”在Hophat Abc所引用的讨论中提出的评论,该评论将在Python 2和3中都适用:


import _ctypes


def di(obj_id):

    """ Inverse of id() function. """

    return _ctypes.PyObj_FromPtr(obj_id)


if __name__ == '__main__':

    a = 42

    b = 'answer'

    print(di(id(a)))  # -> 42

    print(di(id(b)))  # -> answer


查看完整回答
反对 回复 2019-11-02
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

不容易。


您可以遍历gc.get_objects()列表,测试每个对象是否相同,id()但这不是很实际。


该id()函数不可取消引用;它基于内存地址的事实是CPython实现的详细信息,其他Python实现则不遵循。



查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 486 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信