Python如何通過(guò)變量ID得到變量的值
通過(guò)變量ID得到變量的值
已知獲得變量的id用函數(shù)id(),那么它的反函數(shù)是什么?
答案是:PyObj_FromPtr,據(jù)此,寫(xiě)了一個(gè)函數(shù)di(),可以根據(jù) id()的結(jié)果獲得變量的值
from _ctypes import PyObj_FromPtr ? def di(obj_id): ? ? """ 通過(guò)變量ID 得到變量的值""" ? ? return PyObj_FromPtr(obj_id) ? if __name__ == "__main__": ? ? i = {"j":99,"name":"jack"} ? ? var_id = id(i) ? ? print(var_id) ? ? print (di(var_id))
這么做的意義何在?
答案是Python 腳本解釋里有用, 如果要寫(xiě)一個(gè)Python腳本解釋器, 得到一行字符串 : "i = j" , 正常情況下你分割字符串得到 i = "j" , 可如果 已知 j=10, 如何讓 i = 10 呢 ? 經(jīng)過(guò)一系列id() di() 大法, 可以實(shí)現(xiàn)這個(gè)小目標(biāo).
第二種實(shí)現(xiàn)的方法代碼類似,參考 http://www.dbjr.com.cn/article/248147.htm
import ctypes ? value='hello world' #定義一個(gè)字符串變量 address=id(value) #獲取value的地址,賦給address get_value=ctypes.cast(address, ctypes.py_object).value #讀取地址中的變量 print(get_value)
如何查看一個(gè)變量的id
如有錯(cuò)誤歡迎指正
用id()函數(shù)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python GoogleIt庫(kù)實(shí)現(xiàn)在Google搜索引擎上快速搜索
這篇文章主要為大家介紹了python GoogleIt庫(kù)實(shí)現(xiàn)在Google搜索引擎上快速搜索功能探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Pytorch實(shí)現(xiàn)網(wǎng)絡(luò)部分層的固定不進(jìn)行回傳更新問(wèn)題及思路詳解
這篇文章主要介紹了Pytorch實(shí)現(xiàn)網(wǎng)絡(luò)部分層的固定不進(jìn)行回傳更新,實(shí)現(xiàn)思路就是利用tensor的requires_grad,每一個(gè)tensor都有自己的requires_grad成員,值只能為T(mén)rue和False,具體內(nèi)容詳情跟隨小編一起看看吧2021-08-08Python實(shí)現(xiàn)隨機(jī)從圖像中獲取多個(gè)patch
經(jīng)常有一些圖像任務(wù)需要從一張大圖中截取固定大小的patch來(lái)進(jìn)行訓(xùn)練。本文就來(lái)和大家聊聊如何用Python實(shí)現(xiàn)隨機(jī)從圖像中獲取多個(gè)patch,感興趣的可以了解一下2022-08-08Python趣味挑戰(zhàn)之turtle庫(kù)繪畫(huà)飄落的銀杏樹(shù)
銀杏還是和恐龍同時(shí)代的植物,被稱為活化石,適應(yīng)能力強(qiáng),生長(zhǎng)期漫長(zhǎng),壽命可達(dá)千年.因此,銀杏是長(zhǎng)壽的代表和象征,接下來(lái)用Python的turtle庫(kù)來(lái)繪畫(huà)銀杏樹(shù)唯美的一幕,需要的朋友可以參考下2021-05-05Python 寫(xiě)入訓(xùn)練日志文件并控制臺(tái)輸出解析
這篇文章主要介紹了Python 寫(xiě)入訓(xùn)練日志文件并控制臺(tái)輸出解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python實(shí)現(xiàn)的對(duì)本地host127.0.0.1主機(jī)進(jìn)行掃描端口功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的對(duì)本地host127.0.0.1主機(jī)進(jìn)行掃描端口功能,可實(shí)現(xiàn)掃描本機(jī)開(kāi)放端口的功能,涉及Python socket模塊與Thread多線程模塊相關(guān)使用技巧,需要的朋友可以參考下2019-02-02matplotlib實(shí)現(xiàn)區(qū)域顏色填充
這篇文章主要為大家詳細(xì)介紹了matplotlib實(shí)現(xiàn)區(qū)域顏色填充,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03