python-c-extension

    0熱度

    1回答

    我正在使用Python C API,雖然我用Google搜索並發現有些神祕的答案(這不能解決我的問題),但似乎無法通過此錯誤。 當編譯我的程序與gcc -shared [...] 'pkg-config --cflags --libs python3' -fPIC [...](是的,在pkg配置線是反引號),但它會產生此錯誤消息: ‘PyUnicodeUCS2_FromString((const

    2熱度

    1回答

    呼叫PyErr_Set*可以安全地覆蓋異常嗎?根據文檔,如果出現錯誤,PySequence_Fast會提供一個TypeError以及提供給它的const char *消息參數。 PySequence_Fast發生錯誤後撥打PyErr_SetObject是否安全? 實施例: static PyObject * myfunc(PyObject * self, PyObject * args) {

    1熱度

    1回答

    如果我有以下功能並且可選參數myobj未通過,那麼myobj仍然是NULL還是設置爲Py_None? static PyObject * myfunc(PyObject * self, PyObject * args) { PyObject * myobj = NULL; if (!PyArg_ParseTuple(args, "|O", &myobj)) { re

    7熱度

    3回答

    我剛剛開始玩Python C擴展,並且很好奇爲什麼可以從Python調用的C函數必須使用2個PyObject *參數並返回一個PyObject *。我寫了下面的 「Hello World」 擴展名: #include <Python.h> static PyObject * hello_world(PyObject *self, PyObject *noargs) { print

    0熱度

    1回答

    我使用Python/C API和想C函數採取一個Python長整數參數,nPyLong,並將其轉換成一個字符陣列,nString,在底座10在此是我想要做的一個片段。 PyObject *nPyLong; PyArg_ParseTuple(args, "O", nPyLong); PyLong_Check(nPyLong) // returns true const char *nStr

    4熱度

    1回答

    我正在學習Python-C擴展,並且對使用關鍵字參數的方法爲什麼必須轉換爲PyCFunctions感到困惑。我對PyCFunction的理解是,它需要兩個指向PyObjects的指針並返回一個指向PyObject的單個指針 - 例如, PyObject* myFunc(PyObject* self, PyObject* args) 如果我要使用使用關鍵字參數的函數,那麼這個功能將三分,PyO​

    5熱度

    1回答

    從我所知道的,PyList_SetItem和PyList_SETITEM之間的區別在於PyList_SetItem會降低它覆蓋的列表項的引用計數,而PyList_SETITEM不會。 是否有任何理由不應該只使用PyList_SetItem?或者如果我使用PyList_SetItem來初始化列表中的索引位置,我會陷入麻煩嗎?

    1熱度

    1回答

    這應該是一個微不足道的問題,但並沒有成爲初學者。 我使用以下Python C-extenstion numpy的陣列已: #include <cmath> #include <Python.h> #include <iostream> #include "numpy/arrayobject.h" using namespace std; PyObject *func_calc(PyOb

    1熱度

    2回答

    正如我所理解的C和C++之間的關係,後者基本上是前者的擴展,並保留了一定程度的向後兼容性。假設可以用C++代碼調用python C API是否安全? 更重要的是,我注意到,Python官方文檔捆綁C和C++的擴展一起在同一頁上。我找不到C++ API。這使我相信相同的API在兩種語言中都是安全的。 有人可以確認或否認這一點? 編輯: 我覺得我比它必須是我的問題要複雜得多。問題是:爲了在C++中編寫

    1熱度

    3回答

    我讀通過文件methodobject.c,因爲我想學習製作C擴展的Python,當我看到下面的代碼片段: PyObject * PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyCFunctionObject* f = (PyCFunctionObject*)func; PyCFunction