原创 《擴展和嵌入python解釋器》1.10.1 Python中的引用計數

1.10.1 Python中的引用計數 有兩個宏,Py_INCREF(x) 和 Py_DECREF(x), 用來處理增加和減少引用計數。 Py_DECREF(x)也可以在引用計數爲0時釋放對象。爲靈活起見,它卻不直接調用free(),它

原创 《擴展和嵌入python解釋器》1.7 在擴展函數中提取參數

1.7 在擴展函數中提取參數 PyArg_ParseTuple() 函數聲明如下:   int PyArg_ParseTuple(PyObje

原创 《擴展和嵌入python解釋器》1.1 一個簡單的例子

static PyObject * spam_system(PyObject *self, PyObject *args) { const char *command; int sts; if (!PyArg_P

原创 《擴展和嵌入python解釋器》1.2 Intermezzo: 錯誤和異常

1.2 Intermezzo: 錯誤和異常 下面是整個Python解釋器的一個重要慣例:當一個函數發生錯誤時,它應該設置一個異常狀態並返回一個錯誤值

原创 《擴展和嵌入python解釋器》1. 用C或C++擴展Python

 1. 用C或C++擴展Python   如果你懂得如何用C編程,那麼爲Python添加新的內置模塊是十分容易的。通過加入新的擴展模塊 ,可以做兩件用

原创 《擴展和嵌入python解釋器》1.11 用C++寫Python擴展(Writing Extensions in C++)

1.11 用C++寫Python擴展(Writing Extensions in C++) 在一些嚴格應用裏,可能用C++寫擴展模塊。如果主程序(Py

原创 《擴展和嵌入python解釋器》1.10.4 NULL指針(NULL Pointers)

1.10.4 NULL指針(NULL Pointers) 一般,帶有對象引用參數的函數不希望你傳遞給它們NULL指針,如果你傳遞NULL指針,會產生內

原创 《擴展和嵌入python解釋器》1.3 回到例子中

1.3 回到例子 回到我們的例子函數中,現在,你應該能夠理解下面這些語句: if (!PyArg_ParseTuple(args, "s", &c

原创 《擴展和嵌入python解釋器》1.10.2 所有關係原則(Ownership Rules)

1.10.2 所有關係原則(Ownership Rules) 無論何時對象的引用被傳入函數或從函數傳出,它是函數接口規範的一部分,無論擁有關係是被隨引

原创 《擴展和嵌入python解釋器》10.1. 引用計數

1.10 引用計數 在象C或C++這樣的語言中,程序員負責動態地在堆中申請和釋放內存。在C語言中,使用malloc() 和free()函數,在C++中

原创 《擴展和嵌入python解釋器》1.9 構造任意值

1.9 構造任意值 Py_BuildValue()函數和PyArg_ParseTuple()相同,聲明如下:   PyObject *Py_Bui

原创 《擴展和嵌入python解釋器》1.10.3 危險情況(Thin Ice)

1.10.3 危險情況(Thin Ice) 有幾種使用借用引用的情況,看上去沒有壞處,但可能導致一些問題。所有這些和隱含求助解釋器有關,這會導致引用擁

原创 《擴展和嵌入python解釋器》1.8 擴展函數的關鍵字參數

1.8 擴展函數的關鍵字參數 PyArg_ParseTupleAndKeywords()函數聲明如下:   int PyArg_ParseTup

原创 擴展和嵌入python解釋器 - 摘要

  摘要: Python是一種解釋型,面向對象的編程語言。本文描述如何使用C或C++編寫新模塊來擴展Python解釋器。擴展模塊能夠定義新的函數也可以定義新的對象類型及其方法。本文也描述瞭如何將Python解釋器作爲一種擴展語言嵌入到另

原创 《擴展和嵌入python解釋器》1.6 從C中調用Python函數

1.6 從C中調用Python函數 到目前爲止,我們關注的是從Python中可調用C函數。相反,從C中調用Python函數也是有用的。特別是在庫支持