Python如何获得变量的id得到变量的值
Admin 2022-09-02 群英技术资讯 412 次浏览
已知获得变量的id用函数id(),那么它的反函数是什么?
答案是:PyObj_FromPtr,据此,写了一个函数di(),可以根据 id()的结果获得变量的值
from _ctypes import PyObj_FromPtr def di(obj_id): """ 通过变量ID 得到变量的值""" return PyObj_FromPtr(obj_id) if __name__ == "__main__": i = {"j":99,"name":"jack"} var_id = id(i) print(var_id) print (di(var_id))
这么做的意义何在?
答案是Python 脚本解释里有用, 如果要写一个Python脚本解释器, 得到一行字符串 : "i = j" , 正常情况下你分割字符串得到 i = "j" , 可如果 已知 j=10, 如何让 i = 10 呢 ? 经过一系列id() di() 大法, 可以实现这个小目标.
第二种实现的方法代码类似,参考 https://www.jb51.net/article/248147.htm
import ctypes value='hello world' #定义一个字符串变量 address=id(value) #获取value的地址,赋给address get_value=ctypes.cast(address, ctypes.py_object).value #读取地址中的变量 print(get_value)
如有错误欢迎指正
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了如何用python开发Zeroc Ice应用,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
正则表达式可理解为对数据筛选的表达式,是有限个原子和元字符组成。一些朋友对于python实现重叠匹配感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
这篇文章主要介绍了Python编写条件分支代码方法,编写条件分支代码是编码过程中不可或缺的一部分,更多详细介绍需要的小伙伴可以参考下面文章内容
这篇文章主要介绍了Python基础之赋值,浅拷贝,深拷贝的区别,文中有非常详细的代码示例,对正在学习python基础的小伙伴们也有非常好的帮助,需要的朋友可以参考下
这篇文章主要介绍了python OpenCV图像直方图处理,文章通过matplotlib画一个直方图展开详情,具有一定的参考价值,需要的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008