網站首頁 編程語言 正文
通過地址獲取變量
類似于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函數來看看支持的最大整數值:
?
原文鏈接:https://blog.csdn.net/qq_33474442/article/details/85069493
相關推薦
- 2022-07-03 Golang之理解錯誤輸出
- 2022-08-01 React中的Hooks進階理解教程_React
- 2022-06-24 使用ASP.NET?Web?API構建Restful?API_實用技巧
- 2022-04-28 WPF使用StackPanel棧面板布局_實用技巧
- 2022-09-02 Pytorch-LSTM輸入輸出參數方式_python
- 2023-12-08 float 引起的塌陷
- 2022-06-10 ASP.NET?Core使用EF查詢數據_實用技巧
- 2022-05-11 為什么一級封鎖協議不能保證不讀取到臟數據
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支