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 相关文章推荐
python开发之for循环操作实例详解
Nov 12 Python
python 字典(dict)按键和值排序
Jun 28 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
Python 共享变量加锁、释放详解
Aug 28 Python
python实现布隆过滤器及原理解析
Dec 08 Python
Python在线和离线安装第三方库的方法
Oct 31 Python
python基础之while循环语句的使用
Apr 20 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
Python中使用Opencv开发停车位计数器功能
Apr 04 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
风格模板初级不完全修改教程
2006/10/09 PHP
php中socket的用法详解
2014/10/24 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python 内置函数complex详解
2016/10/23 Python
深入理解python对json的操作总结
2017/01/05 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
python argparser的具体使用
2019/11/10 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
Python 日期与时间转换的方法
2020/08/01 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
大整数数相乘的问题
2012/07/22 面试题
中科软笔试题和面试题
2014/10/07 面试题
项目合作意向书范本
2014/04/01 职场文书
安全教育月活动总结
2014/05/05 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
学习计划书怎么写
2014/09/15 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL