1
我已經看遍了,但我找不到PyArg_ParseTupleAndKeywords()
與包含可選參數— 和關鍵字的元組—一起使用的示例。我發現的最接近的是this question,但答案並不特別有用。大多數例子似乎都有關鍵字作爲可選參數,但它看起來像元組也應該能夠包含可選參數。如何使用PyArg_ParseTupleAndKeywords來解析一個包含可選參數以及關鍵字的元組?
想我試圖解析以下參數:
- 雙打(強制)
- 雙打(可選,無關鍵字)
- 可選關鍵字參數的numpy的數組的數組numpy的:
- K1 =>雙打的numpy的陣列
- K2 =>整數
- K3 =>雙
- K4 => Python類實例
好像我應該做這樣的事情
static PyObject* pymod_func(PyObject* self, PyObject* args, PyObject* kwargs) {
static char* keywords[] = {"k1", "k2", "k3", "k4", NULL};
PyObject *arg1, *arg2, *k1, *k4
PyObject *arr1, *arr2, *karr1;
double *k3;
int *k2;
PyArg_ParseTupleAndKeywords(args, kwargs, "O!|O!OidO", keywords, &arg1, &PyArray_Type, &arg2, &PyArray_Type, &k1, &PyArray_Type, &k2, &k3, &k4);
arr1 = PyArray_FROM_OTF(arg1, NPY_FLOAT64, NPY_ARRAY_INOUT_ARRAY);
if (arr1 == NULL) return NULL;
arr2 = PyArray_FROM_OTF(arg1, NPY_FLOAT64, NPY_ARRAY_INOUT_ARRAY);
// no null check, because optional
karr1 = PyArray_FROM_OTF(k1, NPY_FLOAT64, NPY_ARRAY_INOUT_ARRAY);
// again, no null check, because this is optional
// do things with k3, k2, and k4 also
return NULL;
}
其它地方我已經看了,但沒有找到多少求助:
- https://docs.python.org/2/extending/extending.html
- https://docs.python.org/2/c-api/arg.html
- http://docs.scipy.org/doc/numpy-1.10.1/user/c-info.how-to-extend.html
什麼是使用PyArg_ParseTupleAndKeywords()
適當的方式嗎?