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写的Tkinter程序屏幕居中方法
Mar 10 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
Python实现购物程序思路及代码
Jul 24 Python
对python程序内存泄漏调试的记录
Jun 11 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
python实现单链表的方法示例
Sep 03 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 Python
python flask搭建web应用教程
Nov 19 Python
Jupyter加载文件的实现方法
Apr 14 Python
Python实现扫码工具的示例代码
Oct 09 Python
python实现三阶魔方还原的示例代码
Apr 28 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下连接mssql2005的代码
2011/01/17 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
十大使用PHP框架的理由
2015/09/26 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
js对象与打印对象分析比较
2013/04/23 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
python中使用序列的方法
2015/08/03 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
python add_argument()用法解析
2020/01/29 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
什么是TCP/IP
2014/07/27 面试题
2013年入党人员的自我鉴定
2013/10/25 职场文书
企划主管岗位职责
2013/12/12 职场文书
试用期员工考核制度
2014/01/22 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
婚庆公司计划书
2014/09/15 职场文书
三八妇女节慰问信
2015/02/14 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
Java tomcat手动配置servlet详解
2021/11/27 Java/Android