2
在嵌入式Python場景中,我們使用PyArg_ParseTupleAndKeywords
從Python(版本> = 3.x)接收數據並將其用於C++應用程序。使用PyArg_ParseTupleAndKeywords時排除不相關的參數
目前,我們有一個類似的設置:
PyObject* whatever(PyObject *self, PyObject *args, PyObject *keywds) {
....
static char* kwlist[] = { "foo", "bar", NULL };
...
if(!PyArg_ParseTupleAndKeywords(args, keywds, ..., kwlist, ...))
{
...bail out
然而,如果我們通過比兩個預期更多的參數(例如發出蟒蛇調用,比如whatever(foo="a", bar="b", baz="c")
)整個事情崩潰(不是真的,它返回一個錯誤,但這超出了範圍)。
我們想避免這種情況;如果我們能解析只有kwlist
中的參數並且忽略其他的everthing,那將是非常好的。什麼是最好的方式來做到這一點?
我們正在考慮的一種解決方案是將kwlist
轉換爲dict
,然後用PyDict_Merge
等操作它。