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 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
Python调用服务接口的实例
Jan 03 Python
python实现dijkstra最短路由算法
Jan 17 Python
Python进度条的制作代码实例
Aug 31 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 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中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
numpy.random模块用法总结
2019/05/27 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
python多线程实现TCP服务端
2019/09/03 Python
python爬虫 正则表达式解析
2019/09/28 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
Java编程面试题
2016/04/04 面试题
如何写毕业求职自荐信
2013/11/06 职场文书
个人委托书范本
2014/04/02 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
python中requests库+xpath+lxml简单使用
2021/04/29 Python
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers