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实现巡检系统(solaris)示例
Apr 02 Python
使用Python的Supervisor进行进程监控以及自动启动
May 29 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python Socket使用实例
Dec 18 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
如何让python的运行速度得到提升
Jul 08 Python
Python实现打乒乓小游戏
Sep 25 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
基于MySQL体系结构的分析
2013/05/02 PHP
JScript的条件编译
2007/05/29 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
详解Python中的join()函数的用法
2015/04/07 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
摄影助理岗位职责
2014/02/07 职场文书
安全责任书模板
2014/07/22 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
2016春节家属慰问信
2015/03/25 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS