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 相关文章推荐
python3 shelve模块的详解
Jul 08 Python
Django实现全文检索的方法(支持中文)
May 14 Python
Python中的Numpy矩阵操作
Aug 12 Python
python3实现爬取淘宝美食代码分享
Sep 23 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
python matplotlib.pyplot.plot()参数用法
Apr 14 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 Python
python 自动识别并连接串口的实现
Jan 19 Python
Python内置类型集合set和frozenset的使用详解
Apr 26 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的无限分类实现想法~
2007/01/02 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
js 小贴士一星期合集
2010/04/07 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
在Python程序中操作MySQL的基本方法
2015/07/29 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP