Python如何通過變量ID得到變量的值
通過變量ID得到變量的值
已知獲得變量的id用函數(shù)id(),那么它的反函數(shù)是什么?
答案是:PyObj_FromPtr,據(jù)此,寫了一個函數(shù)di(),可以根據(jù) id()的結(jié)果獲得變量的值
from _ctypes import PyObj_FromPtr ? def di(obj_id): ? ? """ 通過變量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 腳本解釋里有用, 如果要寫一個Python腳本解釋器, 得到一行字符串 : "i = j" , 正常情況下你分割字符串得到 i = "j" , 可如果 已知 j=10, 如何讓 i = 10 呢 ? 經(jīng)過一系列id() di() 大法, 可以實現(xiàn)這個小目標.
第二種實現(xiàn)的方法代碼類似,參考 http://www.dbjr.com.cn/article/248147.htm
import ctypes ? value='hello world' #定義一個字符串變量 address=id(value) #獲取value的地址,賦給address get_value=ctypes.cast(address, ctypes.py_object).value #讀取地址中的變量 print(get_value)
如何查看一個變量的id
如有錯誤歡迎指正
用id()函數(shù)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python GoogleIt庫實現(xiàn)在Google搜索引擎上快速搜索
這篇文章主要為大家介紹了python GoogleIt庫實現(xiàn)在Google搜索引擎上快速搜索功能探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01Pytorch實現(xiàn)網(wǎng)絡(luò)部分層的固定不進行回傳更新問題及思路詳解
這篇文章主要介紹了Pytorch實現(xiàn)網(wǎng)絡(luò)部分層的固定不進行回傳更新,實現(xiàn)思路就是利用tensor的requires_grad,每一個tensor都有自己的requires_grad成員,值只能為True和False,具體內(nèi)容詳情跟隨小編一起看看吧2021-08-08Python趣味挑戰(zhàn)之turtle庫繪畫飄落的銀杏樹
銀杏還是和恐龍同時代的植物,被稱為活化石,適應(yīng)能力強,生長期漫長,壽命可達千年.因此,銀杏是長壽的代表和象征,接下來用Python的turtle庫來繪畫銀杏樹唯美的一幕,需要的朋友可以參考下2021-05-05Python實現(xiàn)的對本地host127.0.0.1主機進行掃描端口功能示例
這篇文章主要介紹了Python實現(xiàn)的對本地host127.0.0.1主機進行掃描端口功能,可實現(xiàn)掃描本機開放端口的功能,涉及Python socket模塊與Thread多線程模塊相關(guān)使用技巧,需要的朋友可以參考下2019-02-02