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中让MySQL查询结果返回字典类型的方法
Aug 22 Python
Python Web框架Flask下网站开发入门实例
Feb 08 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
python查看微信好友是否删除自己
Dec 19 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
如何使用python传入不确定个数参数
Feb 18 Python
pandas分批读取大数据集教程
Jun 06 Python
python实现二分查找算法
Sep 18 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 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
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
js 日期转换成中文格式的函数
2009/07/07 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
Python map及filter函数使用方法解析
2020/08/06 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
自荐信格式
2013/12/01 职场文书
个性发展自我评价
2014/02/11 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
结婚保证书范文
2014/04/29 职场文书
青岛海底世界导游词
2015/02/11 职场文书
红色电影观后感
2015/06/18 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
高中英语教学反思范文
2016/03/02 职场文书