我有如下代码:
PyObject *callback;
PyObject *paths;
// Process and convert arguments
if (!PyArg_ParseTuple(args, "OO:schedule", &paths, &callback))
return NULL;
PyArg_ParseTuple 内部究竟发生了什么?我的猜测是回调获取了我传递给 args(也是 PyObject*)的函数指针。PyArg_ParseTuple 如何将函数指针转换为 PyObject*?
我想知道的是,如果我两次传入同一个回调函数指针会发生什么。我认为回调在 PyArg_ParseTuple 中分配了一个新的 PyObject,因此每次都会获得不同的内存地址,但会包含相同的回调函数指针。
但是如果我 PyObject_Hash 回调,它每次都会产生不同的值,对吧?(因为地址每次都不一样..)