Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyArg_解析返回的frame对象而不是PyLongObject_Python_C_Python Extensions - Fatal编程技术网

Python PyArg_解析返回的frame对象而不是PyLongObject

Python PyArg_解析返回的frame对象而不是PyLongObject,python,c,python-extensions,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 *nu

我正在使用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;
}

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

Ah!非常感谢。结果是我把
O(object)[PyObject*]
的文档误读为0而不是O。通过正确处理我的错误而不是懒惰,我意识到了这一点,谢谢!