在Python用地址获取变量怎样实现呢
Admin 2022-09-02 群英技术资讯 1120 次浏览
今天小编跟大家讲解下有关“在Python用地址获取变量怎样实现呢”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。类似于C/C++中令一个指针指向一个变量的地址,通过解引用可以得到变量的值。
利用ctypes模块在Python中实现类似的功能:
import ctypes value='hello world' #定义一个字符串变量 address=id(value) #获取value的地址,赋给address get_value=ctypes.cast(address, ctypes.py_object).value #读取地址中的变量 print(get_value)
得到输出:
hello world
一句话:
万物皆对象,变量皆指针
这里简单介绍一下指针是什么:
指针起源自c语言,在c语言中,每一块内存(或者是每一段)都存在着一个单独的变量用于标识这一坨内存,我们可以通过申请一个这样的变量去指向一块内存,自然也可以改变一块内存所属的这个变量,这个变量又叫地址也叫指针。
在c语言中,申请变量a

需要标识变量的类型,因此我们在做完这个申请操作之后,相当于同时申请了一个int(整数)大小的内存和一个这块内存的地址(&a)
*****而在python中申请变量并不需要单独表明申请变量的类型而是直接赋值就行了。
这就是python所独有的消除指针概念的方法——直接把变量全换成指针
这就有点像打不过就加入:
因此在python中通过变量申请内存空间,本质上是申请了一个地址,这个地址告诉电脑从那一大块的内存哪儿开始存东西
所以大家很容易发现一个有趣的现象,python常见的就是三种类型的变量,而他们的大小上限几乎就是一样大的:)
因为相对于c语言来说,申请变量本身就限制了变量的最大大小(有叫做内存管理),而python给你开了个门(申请了个开头的地址)你想往里塞多少都行(理论上)
但是其实也是有上限的(为了放置一个死循环在一个变量里就把你整块内存条炸掉)
我们可以通过sys模块的maxsize函数来看看支持的最大整数值:


免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() 。区别与使用函数str() 用于将值转
对于扫雷游戏相信大家应该都不陌生吧,扫雷游戏可以说是很经典的游戏了,之前我们了解了使用介绍实现扫雷游戏,这篇文章我们就来尝试使用python做一个扫雷游戏,感兴趣的朋友就接着往下看吧。
这篇文章主要为大家详细介绍了python开发飞机大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文给大家分享python学习的基础知识,也就是python生成器和文件系统的知识,那么python生成器是什么?如何使用?文件系统如何操作?下面我们就来详细的了解看看。
这篇文章主要介绍了Python assert断言声明,遇到错误则立即返回问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008