Python如何通過(guò)地址獲取變量
通過(guò)地址獲取變量
類(lèi)似于C/C++中令一個(gè)指針指向一個(gè)變量的地址,通過(guò)解引用可以得到變量的值。
利用ctypes模塊在Python中實(shí)現(xiàn)類(lèi)似的功能:
import ctypes? value='hello world' #定義一個(gè)字符串變量 address=id(value) #獲取value的地址,賦給address get_value=ctypes.cast(address, ctypes.py_object).value #讀取地址中的變量 print(get_value)
得到輸出:
hello world
python的變量是什么?
變量皆指針的簡(jiǎn)單理解
一句話:
萬(wàn)物皆對(duì)象,變量皆指針
這里簡(jiǎn)單介紹一下指針是什么:
指針起源自c語(yǔ)言,在c語(yǔ)言中,每一塊內(nèi)存(或者是每一段)都存在著一個(gè)單獨(dú)的變量用于標(biāo)識(shí)這一坨內(nèi)存,我們可以通過(guò)申請(qǐng)一個(gè)這樣的變量去指向一塊內(nèi)存,自然也可以改變一塊內(nèi)存所屬的這個(gè)變量,這個(gè)變量又叫地址也叫指針。
在c語(yǔ)言中,申請(qǐng)變量a
![]()
需要標(biāo)識(shí)變量的類(lèi)型,因此我們?cè)谧鐾赀@個(gè)申請(qǐng)操作之后,相當(dāng)于同時(shí)申請(qǐng)了一個(gè)int(整數(shù))大小的內(nèi)存和一個(gè)這塊內(nèi)存的地址(&a)
*****而在python中申請(qǐng)變量并不需要單獨(dú)表明申請(qǐng)變量的類(lèi)型而是直接賦值就行了。
這就是python所獨(dú)有的消除指針概念的方法——直接把變量全換成指針
這就有點(diǎn)像打不過(guò)就加入:
因此在python中通過(guò)變量申請(qǐng)內(nèi)存空間,本質(zhì)上是申請(qǐng)了一個(gè)地址,這個(gè)地址告訴電腦從那一大塊的內(nèi)存哪兒開(kāi)始存東西
所以大家很容易發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象,python常見(jiàn)的就是三種類(lèi)型的變量,而他們的大小上限幾乎就是一樣大的:)
因?yàn)橄鄬?duì)于c語(yǔ)言來(lái)說(shuō),申請(qǐng)變量本身就限制了變量的最大大?。ㄓ薪凶鰞?nèi)存管理),而python給你開(kāi)了個(gè)門(mén)(申請(qǐng)了個(gè)開(kāi)頭的地址)你想往里塞多少都行(理論上)
但是其實(shí)也是有上限的(為了放置一個(gè)死循環(huán)在一個(gè)變量里就把你整塊內(nèi)存條炸掉)
我們可以通過(guò)sys模塊的maxsize函數(shù)來(lái)看看支持的最大整數(shù)值:


以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Python正則表達(dá)式 findall函數(shù)問(wèn)題詳解
在寫(xiě)正則表達(dá)式的時(shí)候總會(huì)遇到不少的問(wèn)題,本文講述了Python正則表達(dá)式中 findall()函數(shù)和多個(gè)表達(dá)式元組相遇的時(shí)候會(huì)出現(xiàn)的問(wèn)題2018-03-03
Python類(lèi)中使用cursor.execute()時(shí)語(yǔ)法錯(cuò)誤的解決方法
在 Python 類(lèi)中使用 cursor.execute() 時(shí),出現(xiàn)語(yǔ)法錯(cuò)誤(如 SyntaxError 或 SQL 語(yǔ)法相關(guān)錯(cuò)誤)通常是因?yàn)?nbsp;SQL 語(yǔ)句格式不正確、占位符使用不當(dāng),或參數(shù)傳遞方式不符合預(yù)期,以下是解決此類(lèi)問(wèn)題的常見(jiàn)方法和建議,需要的朋友可以參考下2024-09-09
Python實(shí)現(xiàn)數(shù)據(jù)可視化案例分析
這篇文章主要介紹了Python實(shí)現(xiàn)數(shù)據(jù)可視化案例分析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
Python3和PyCharm安裝與環(huán)境配置【圖文教程】
這篇文章主要介紹了Python3和PyCharm安裝與環(huán)境配置,結(jié)合圖文形式詳細(xì)分析了Python3和PyCharm的安裝、環(huán)境配置、測(cè)試命令及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
PyTorch中torch.matmul()函數(shù)常見(jiàn)用法總結(jié)
torch.matmul()也是一種類(lèi)似于矩陣相乘操作的tensor連乘操作。但是它可以利用python中的廣播機(jī)制,處理一些維度不同的tensor結(jié)構(gòu)進(jìn)行相乘操作,這篇文章主要介紹了PyTorch中torch.matmul()函數(shù)用法總結(jié),需要的朋友可以參考下2023-04-04
Python筆記之Scipy.stats.norm函數(shù)使用解析
這篇文章主要介紹了Python筆記之Scipy.stats.norm函數(shù)使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Python第三方庫(kù)face_recognition在windows上的安裝過(guò)程
今天為大家介紹下face recognition在Windows系統(tǒng)上安裝與使用,但在Windows平臺(tái)上face recognition性能會(huì)有所下降2019-05-05

