У меня есть код, подобный следующему:
PyObject *callback;
PyObject *paths;
// Process and convert arguments
if (!PyArg_ParseTuple(args, "OO:schedule", &paths, &callback))
return NULL;
Что именно происходит внутри PyArg_ParseTuple?Я предполагаю, что обратный вызов получает указатель функции, который я передал аргументам (также PyObject *).Как PyArg_ParseTuple преобразует указатель функции в PyObject *?
Что я хочу знать, так это то, что произойдет, если я передам один и тот же указатель функции обратного вызова дважды.Я думаю, что обратному вызову выделяется новый PyObject внутри PyArg_ParseTuple, поэтому он будет каждый раз получать новый адрес памяти, но будет содержать один и тот же указатель функции обратного вызова.
Но если я сделаю обратный вызов PyObject_Hash, он будет выдавать другое значениевремя, верно?(так как адрес каждый раз отличается ..)