新聞中心
引用計(jì)數(shù)
本節(jié)介紹的宏被用于管理 python 對象的引用計(jì)數(shù)。

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括碭山網(wǎng)站建設(shè)、碭山網(wǎng)站制作、碭山網(wǎng)頁制作以及碭山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,碭山網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到碭山省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
void Py_INCREF(PyObject *o)
增加對象 o 的引用計(jì)數(shù)。
此函數(shù)通常被用來將 borrowed reference 原地轉(zhuǎn)換為 strong reference。 Py_NewRef() 函數(shù)可被用來創(chuàng)建新的 strong reference。
此對象必須不為 NULL;如果你不能確定它不為 NULL,請使用 Py_XINCREF()。
void Py_XINCREF(PyObject *o)
增加對象 o 的引用計(jì)數(shù)。 對象可以為 NULL,在此情況下該宏不產(chǎn)生任何效果。
另請參閱 Py_XNewRef()。
PyObject *Py_NewRef(PyObject *o)
Part of the Stable ABI since version 3.10.
新建指向一個(gè)對象的 strong reference: 增加對象 o 的引用計(jì)數(shù)并返回對象 o。
當(dāng)不再需要這個(gè) strong reference 時(shí),應(yīng)當(dāng)在對象上調(diào)用 Py_DECREF() 來有減少該對象的引用計(jì)數(shù)。
對象 o 必須不為 NULL;如果 o 可以為 NULL 則應(yīng)改用 Py_XNewRef()。
例如:
Py_INCREF(obj);self->attr = obj;
可以寫成:
self->attr = Py_NewRef(obj);
另請參閱 Py_INCREF()。
3.10 新版功能.
PyObject *Py_XNewRef(PyObject *o)
Part of the Stable ABI since version 3.10.
類似于 Py_NewRef(),但對象 o 可以為 NULL。
如果對象 o 為 NULL,該函數(shù)也·將返回 NULL。
3.10 新版功能.
void Py_DECREF(PyObject *o)
減少對象 o 的引用計(jì)數(shù)。
如果引用計(jì)數(shù)達(dá)到零,則會發(fā)起調(diào)用對象類型的撤銷分配函數(shù) (該函數(shù)必須不為 NULL)。
此函數(shù)通常被用于在退出作用域之前刪除一個(gè) strong reference。
此對象必須不為 NULL;如果你不能確定它不為 NULL,請使用 Py_XDECREF()。
警告
釋放函數(shù)可導(dǎo)致任意 Python 代碼被發(fā)起調(diào)用(例如當(dāng)一個(gè)帶有 __del__() 方法的類實(shí)例被釋放時(shí)就是如此)。 雖然此類代碼中的異常不會被傳播,但被執(zhí)行的代碼能夠自由訪問所有 Python 全局變量。 這意味著任何可通過全局變量獲取的對象在 Py_DECREF() 被發(fā)起調(diào)用之前都應(yīng)當(dāng)處于完好狀態(tài)。 例如,從一個(gè)列表中刪除對象的代碼應(yīng)當(dāng)將被刪除對象的引用拷貝到一個(gè)臨時(shí)變量中,更新列表數(shù)據(jù)結(jié)構(gòu),然后再為臨時(shí)變量調(diào)用 Py_DECREF()。
void Py_XDECREF(PyObject *o)
減少對象 o 的引用計(jì)數(shù)。 對象可以為 NULL,在此情況下該宏不產(chǎn)生任何效果;在其他情況下其效果與 Py_DECREF() 相同,并會應(yīng)用同樣的警告。
void Py_CLEAR(PyObject *o)
減少對象 o 的引用計(jì)數(shù)。 對象可以為 NULL,在此情況下該宏不產(chǎn)生任何效果;在其他情況下其效果與 Py_DECREF() 相同,區(qū)別在于其參數(shù)也會被設(shè)為 NULL。 針對 Py_DECREF() 的警告不適用于所傳遞的對象,因?yàn)樵摵陼?xì)心地使用一個(gè)臨時(shí)變量并在減少其引用計(jì)數(shù)之前將參數(shù)設(shè)為 NULL。
每當(dāng)要減少在垃圾回收期間可能會被遍歷的對象的引用計(jì)數(shù)時(shí),使用該宏是一個(gè)好主意。
void Py_IncRef(PyObject *o)
Part of the Stable ABI.
增加對象 o 的引用計(jì)數(shù)。 Py_XINCREF() 的函數(shù)版本。 它可被用于 Python 的運(yùn)行時(shí)動態(tài)嵌入。
void Py_DecRef(PyObject *o)
Part of the Stable ABI.
增加對象 o 的引用計(jì)數(shù)。 Py_XDECREF() 的函數(shù)版本。 它可被用于 Python 的運(yùn)行時(shí)動態(tài)嵌入。
以下函數(shù)或宏僅可在解釋器核心內(nèi)部使用: _Py_Dealloc(), _Py_ForgetReference(), _Py_NewReference() 以及全局變量 _Py_RefTotal。
本文標(biāo)題:創(chuàng)新互聯(lián)Python教程:引用計(jì)數(shù)
URL標(biāo)題:http://m.fisionsoft.com.cn/article/cocphej.html


咨詢
建站咨詢
