我正在使用C扩展API编写Python模块,并试图将一个长变量从Python传递到C函数中,然后从中获取用于表示此变量的原始PyLongObject。

我正在使用PyArg_Parse函数将变量解析为原始C指针。我期望返回的PyObject的类型为PyLongObject,但是,每当我检查解析对象的类型名称的值时,它始终是'frame'类型的?我想念什么?

static PyObject* test(PyObject *self, PyObject *args)
{
    PyObject *num;

    if(!PyArg_Parse(args, "0", &num))
    {
        //ERROR YO
    }

    printf("\n%s\n", num->ob_type->tp_name);

    Py_RETURN_NONE;
}

最佳答案

好像您正在传递无效的参数格式规范(那里从来没有看到0(零))。结果,您将得到一个未处理的异常,但会将“ num”中的返回值视为成功值。最重要的是,您正在使用不推荐使用的函数来解析参数。

关于python - PyArg_Parse返回框架对象而不是PyLongObject,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26325461/

10-12 18:13