Python如何通过变量ID得到变量的值

 更新时间:2022年05月16日 16:04:26   作者:大马鱼哈  
这篇文章主要介绍了Python如何通过变量ID得到变量的值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

通过变量ID得到变量的值

已知获得变量的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)

如何查看一个变量的id

如有错误欢迎指正

用id()函数

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • PyQt5根据控件Id获取控件对象的方法

    PyQt5根据控件Id获取控件对象的方法

    今天小编就为大家分享一篇PyQt5根据控件Id获取控件对象的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python杀死一个线程的方法

    python杀死一个线程的方法

    由于python线程没有提供abort方法,所以我们需要自己想办法解决此问题,面对这一问题,小编帮大家解决phthon杀死一个线程的方法,需要的朋友一起来学习吧
    2015-09-09
  • python GoogleIt库实现在Google搜索引擎上快速搜索

    python GoogleIt库实现在Google搜索引擎上快速搜索

    这篇文章主要为大家介绍了python GoogleIt库实现在Google搜索引擎上快速搜索功能探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Pytorch实现网络部分层的固定不进行回传更新问题及思路详解

    Pytorch实现网络部分层的固定不进行回传更新问题及思路详解

    这篇文章主要介绍了Pytorch实现网络部分层的固定不进行回传更新,实现思路就是利用tensor的requires_grad,每一个tensor都有自己的requires_grad成员,值只能为True和False,具体内容详情跟随小编一起看看吧
    2021-08-08
  • Python实现随机从图像中获取多个patch

    Python实现随机从图像中获取多个patch

    经常有一些图像任务需要从一张大图中截取固定大小的patch来进行训练。本文就来和大家聊聊如何用Python实现随机从图像中获取多个patch,感兴趣的可以了解一下
    2022-08-08
  • Python趣味挑战之turtle库绘画飘落的银杏树

    Python趣味挑战之turtle库绘画飘落的银杏树

    银杏还是和恐龙同时代的植物,被称为活化石,适应能力强,生长期漫长,寿命可达千年.因此,银杏是长寿的代表和象征,接下来用Python的turtle库来绘画银杏树唯美的一幕,需要的朋友可以参考下
    2021-05-05
  • Python 写入训练日志文件并控制台输出解析

    Python 写入训练日志文件并控制台输出解析

    这篇文章主要介绍了Python 写入训练日志文件并控制台输出解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python实现的对本地host127.0.0.1主机进行扫描端口功能示例

    Python实现的对本地host127.0.0.1主机进行扫描端口功能示例

    这篇文章主要介绍了Python实现的对本地host127.0.0.1主机进行扫描端口功能,可实现扫描本机开放端口的功能,涉及Python socket模块与Thread多线程模块相关使用技巧,需要的朋友可以参考下
    2019-02-02
  • flask与数据库的交互操作示例

    flask与数据库的交互操作示例

    这篇文章主要为大家介绍了flask与数据库的交互操作示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • matplotlib实现区域颜色填充

    matplotlib实现区域颜色填充

    这篇文章主要为大家详细介绍了matplotlib实现区域颜色填充,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03

最新评论