5

我正在为 Python 模块编写一个简单的 C 包装器。我需要做的是创建一个PyObject*代表None. 我不知道该怎么做。是否有一个简单的函数将返回一个PyObject*指向None,类似于PyTuple_New返回一个PyObject*指向新元组或 PyString_FromString` 返回一个指向 python 字符串的方法?

注意是否有可能,当调用如下函数时,传递 CNULL会起作用?例子:

//pFunc points to a function with 2 arguments
PyObject *pArgs = PyTuple_New(2);
PyTuple_SetItem(pArgs, 0, PyString_FromString("hello"));
PyTuple_SetItem(pArgs, 1, NULL); // <--- will this create a python object representing None?
pValue = PyObject_CallObject(pFunc, pArgs);
4

1 回答 1

7

根据文档None是一个单例,可以从 C 代码中访问Py_None

PyObject* Py_NonePythonNone对象,表示缺乏价值。这个对象没有方法。在引用计数方面,它需要像任何其他对象一样对待。

Py_RETURN_NONE正确处理Py_None从 C 函数中返回的内容。

于 2012-11-26T17:33:40.007 回答