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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
在python的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
python将txt文件读取为字典的示例
Dec 22 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
使用Python实现批量ping操作方法
May 06 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
linux中nohup和后台运行进程查看及终止
Jun 24 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中的超全局变量
2006/10/09 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
js三种排序算法分享
2012/08/16 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
python实现多线程的两种方式
2016/05/22 Python
快速入门python学习笔记
2017/12/06 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
HTTP状态码详解
2021/03/18 杂记
英国精品买手店:Browns Fashion
2016/09/29 全球购物
会计自我鉴定范文
2013/10/06 职场文书
军训生自我鉴定范文
2013/12/27 职场文书
骨干教师考核方案
2014/05/09 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
安全施工标语
2014/06/07 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
先进工作者申报材料
2014/12/23 职场文书
数学教师个人总结
2015/02/06 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
Java后台生成图片的完整步骤
2021/08/04 Java/Android