PyArg_Parse返回帧对象而不是PyLongObject

时间:2014-10-12 13:10:26

标签: python c python-extensions

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

我正在使用PyArg_Parse函数将变量解析为原始C指针。我期望PyObject返回为PyLongObject类型,但每当我检查解析对象的typename值时,它总是类型为'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;
}

1 个答案:

答案 0 :(得分:1)

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