python从内存地址上加载python对象过程详解


Posted in Python onJanuary 08, 2020

这篇文章主要介绍了python从内存地址上加载pythn对象过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在python中我们可以通过id函数来获取某个python对象的内存地址,或者可以通过调用对象的__repr__魔术函数来获取对象的详细信息

def tt():
  print(111)
print(tt.__repr__())
print(id(tt))

但是不知大家是否想过,其实这个内存地址可以直接加载python对象的。有两种方法:

1. PyObj_FromPtr

在_ctypes包中,就提供PyObj_FromPtr这个api去实现我们的需求。代码如下

def tt():
  print(111)
print(tt.__repr__())
print(_ctypes.PyObj_FromPtr(id(tt)))

运行结果如下:

<function tt at 0x106c628c8>
<function tt at 0x106c628c8>

2. gc.get_objects

我们也可以通过gc的get_objects方法来实现。先来看一下官方介绍

gc.get_objects()
Returns a list of all objects tracked by the collector, excluding the list returned.

大致意思为,获取所有可以追踪的对象。所以,我们可以通过第二种方式来实现从特定内存地址加载python对象

def tt():
  print(111)
print(tt.__repr__())

for i in gc.get_objects():
  if id(i) == id(tt):
    print(i)

方法很简单,通过gc.get_objects获取所有对象,一一检查这些对象的内存地址是否与给定的内存地址相符,如果相符则返回对象。

结论

额,很扯淡的东西,最好不要乱用这种东西。因为出错的话,try except语句都无法捕捉到这种异常。就当是了解一下吧

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pytyon 带有重复的全排列
Aug 13 Python
python访问系统环境变量的方法
Apr 29 Python
python fabric实现远程部署
Jan 05 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
Python中函数参数调用方式分析
Aug 09 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
python学习之hook钩子的原理和使用
Oct 25 Python
Python3.5运算符操作实例详解
Apr 25 Python
Python测试线程应用程序过程解析
Dec 31 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
PyCharm第一次安装及使用教程
Jan 08 #Python
Python namedtuple命名元组实现过程解析
Jan 08 #Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 #Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 #Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 #Python
pycharm激活码有效到2020年11月底
Sep 18 #Python
pymysql的简单封装代码实例
Jan 08 #Python
You might like
php 注释规范
2012/03/29 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
python多线程扫描端口(线程池)
2019/09/04 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
python 爬取疫情数据的源码
2020/02/09 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
彪马美国官网:PUMA美国
2017/03/09 全球购物
美国眼镜网:GlassesUSA
2017/09/07 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
合作投资意向书
2014/04/01 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
2014年租房协议书范本
2014/10/30 职场文书
道德与公民自我评价
2015/03/09 职场文书
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript