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字符串方法的简单使用
Jul 18 Python
Python处理中文标点符号大集合
May 14 Python
python 字典中取值的两种方法小结
Aug 02 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
用Python写一个自动木马程序
Sep 17 Python
为什么说Python可以实现所有的算法
Oct 04 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
python函数不定长参数使用方法解析
Dec 14 Python
Pytorch之finetune使用详解
Jan 18 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
Feb 21 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 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/12/06 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
Linux中为php配置伪静态
2014/12/17 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
js解决movebox移动问题
2016/03/29 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
进一步探究Python的装饰器的运用
2015/05/05 Python
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
python实现学生信息管理系统
2020/04/05 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
化工专业大学生职业生涯规划书
2014/01/14 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
英语演讲开场白
2015/05/29 职场文书
晚会开场白和结束语
2015/05/29 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
村主任当选感言
2015/08/01 职场文书
新学期开学寄语2016
2015/12/04 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android