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


以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Python类中使用cursor.execute()时语法错误的解决方法
在 Python 类中使用 cursor.execute() 时,出现语法错误(如 SyntaxError 或 SQL 语法相关错误)通常是因为 SQL 语句格式不正确、占位符使用不当,或参数传递方式不符合预期,以下是解决此类问题的常见方法和建议,需要的朋友可以参考下2024-09-09
PyTorch中torch.matmul()函数常见用法总结
torch.matmul()也是一种类似于矩阵相乘操作的tensor连乘操作。但是它可以利用python中的广播机制,处理一些维度不同的tensor结构进行相乘操作,这篇文章主要介绍了PyTorch中torch.matmul()函数用法总结,需要的朋友可以参考下2023-04-04
Python笔记之Scipy.stats.norm函数使用解析
这篇文章主要介绍了Python笔记之Scipy.stats.norm函数使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-02-02
Python第三方库face_recognition在windows上的安装过程
今天为大家介绍下face recognition在Windows系统上安装与使用,但在Windows平台上face recognition性能会有所下降2019-05-05


最新评论