欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python從內(nèi)存地址上加載python對(duì)象過(guò)程詳解

 更新時(shí)間:2020年01月08日 11:06:34   作者:potatso  
這篇文章主要介紹了python從內(nèi)存地址上加載pythn對(duì)象過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了python從內(nèi)存地址上加載pythn對(duì)象過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

在python中我們可以通過(guò)id函數(shù)來(lái)獲取某個(gè)python對(duì)象的內(nèi)存地址,或者可以通過(guò)調(diào)用對(duì)象的__repr__魔術(shù)函數(shù)來(lái)獲取對(duì)象的詳細(xì)信息

def tt():
  print(111)
print(tt.__repr__())
print(id(tt))

但是不知大家是否想過(guò),其實(shí)這個(gè)內(nèi)存地址可以直接加載python對(duì)象的。有兩種方法:

1. PyObj_FromPtr

在_ctypes包中,就提供PyObj_FromPtr這個(gè)api去實(shí)現(xiàn)我們的需求。代碼如下

def tt():
  print(111)
print(tt.__repr__())
print(_ctypes.PyObj_FromPtr(id(tt)))

運(yùn)行結(jié)果如下:

<function tt at 0x106c628c8>
<function tt at 0x106c628c8>

2. gc.get_objects

我們也可以通過(guò)gc的get_objects方法來(lái)實(shí)現(xiàn)。先來(lái)看一下官方介紹

gc.get_objects()
Returns a list of all objects tracked by the collector, excluding the list returned.

大致意思為,獲取所有可以追蹤的對(duì)象。所以,我們可以通過(guò)第二種方式來(lái)實(shí)現(xiàn)從特定內(nèi)存地址加載python對(duì)象

def tt():
  print(111)
print(tt.__repr__())

for i in gc.get_objects():
  if id(i) == id(tt):
    print(i)

方法很簡(jiǎn)單,通過(guò)gc.get_objects獲取所有對(duì)象,一一檢查這些對(duì)象的內(nèi)存地址是否與給定的內(nèi)存地址相符,如果相符則返回對(duì)象。

結(jié)論

額,很扯淡的東西,最好不要亂用這種東西。因?yàn)槌鲥e(cuò)的話,try except語(yǔ)句都無(wú)法捕捉到這種異常。就當(dāng)是了解一下吧

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論