当我有一个从 PyArg_ParseTuple
获得的 PyObject *
时,我是否需要确保在从函数返回之前 Py_DECREF
它?
例子:
static PyObject * modulefunc(PyObject * self, PyObject * args) {
PyObject * obj;
if (!PyArg_ParseTuple(args, "O", &obj)) {
return NULL;
}
if (!PyObject_TypeCheck(obj, expected_type_ptr)) {
// Do I need to Py_DECREF(obj) here?
PyErr_SetString(PyExc_TypeError, "First argument is not expected type.");
return NULL;
}
// ... rest of function implementation.
}
最佳答案
没有。 PyArg_ParseTuple 给你一个 borrowed reference .
关于Python C 模块函数参数引用计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9892634/