組み込みのPythonシナリオでは、PyArg_ParseTupleAndKeywords
を使用してPython(バージョン> = 3 .x)からデータを受け取り、C++アプリケーションで使用します。我々は全部のクラッシュ(本当に、それが返されます(whatever(foo="a", bar="b", baz="c")
のようなPythonのコールを発行するなど)2は、予想以上のパラメータを渡すと、しかしPyArg_ParseTupleAndKeywordsを使用する際に関連性のないパラメータを除外する
PyObject* whatever(PyObject *self, PyObject *args, PyObject *keywds) {
....
static char* kwlist[] = { "foo", "bar", NULL };
...
if(!PyArg_ParseTupleAndKeywords(args, keywds, ..., kwlist, ...))
{
...bail out
:私たちは同様のセットアップを持っている瞬間
エラーですが、それはここの範囲を超えています)。
このようなシナリオは避けてください。 だけをkwlist
ののパラメータで解析し、それ以外のものは無視するといいでしょう。それを行う最善の方法は何ですか?
kwlist
をdict
に変換してから、PyDict_Merge
などで操作してください。