Python如何通過地址獲取變量
通過地址獲取變量
類似于C/C++中令一個指針指向一個變量的地址,通過解引用可以得到變量的值。
利用ctypes模塊在Python中實(shí)現(xiàn)類似的功能:
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語言中,每一塊內(nèi)存(或者是每一段)都存在著一個單獨(dú)的變量用于標(biāo)識這一坨內(nèi)存,我們可以通過申請一個這樣的變量去指向一塊內(nèi)存,自然也可以改變一塊內(nèi)存所屬的這個變量,這個變量又叫地址也叫指針。
在c語言中,申請變量a
![]()
需要標(biāo)識變量的類型,因此我們在做完這個申請操作之后,相當(dāng)于同時申請了一個int(整數(shù))大小的內(nèi)存和一個這塊內(nèi)存的地址(&a)
*****而在python中申請變量并不需要單獨(dú)表明申請變量的類型而是直接賦值就行了。
這就是python所獨(dú)有的消除指針概念的方法——直接把變量全換成指針
這就有點(diǎn)像打不過就加入:
因此在python中通過變量申請內(nèi)存空間,本質(zhì)上是申請了一個地址,這個地址告訴電腦從那一大塊的內(nèi)存哪兒開始存東西
所以大家很容易發(fā)現(xiàn)一個有趣的現(xiàn)象,python常見的就是三種類型的變量,而他們的大小上限幾乎就是一樣大的:)
因?yàn)橄鄬τ赾語言來說,申請變量本身就限制了變量的最大大?。ㄓ薪凶鰞?nèi)存管理),而python給你開了個門(申請了個開頭的地址)你想往里塞多少都行(理論上)
但是其實(shí)也是有上限的(為了放置一個死循環(huán)在一個變量里就把你整塊內(nèi)存條炸掉)
我們可以通過sys模塊的maxsize函數(shù)來看看支持的最大整數(shù)值:


以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
用Python自動清理系統(tǒng)垃圾的實(shí)現(xiàn)
這篇文章主要介紹了用Python自動清理系統(tǒng)垃圾的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python?numpy中np.random.seed()的詳細(xì)用法實(shí)例
在學(xué)習(xí)人工智能時,大量的使用了np.random.seed(),利用隨機(jī)數(shù)種子,使得每次生成的隨機(jī)數(shù)相同,下面這篇文章主要給大家介紹了關(guān)于Python?numpy中np.random.seed()的詳細(xì)用法,需要的朋友可以參考下2022-08-08
python基于Pandas讀寫MySQL數(shù)據(jù)庫
這篇文章主要介紹了python基于Pandas讀寫MySQL數(shù)據(jù)庫,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04
Python中pandas的dataframe過濾數(shù)據(jù)方法
這篇文章主要介紹了Python中pandas的dataframe過濾數(shù)據(jù)方法,Pandas是另外一個用于處理高級數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析的Python庫,Pandas是基于Numpy構(gòu)建的一種工具,需要的朋友可以參考下2023-07-07

