在嵌入式python中创建新的None对象

ewo*_*wok 4 c python null embedding

我正在为Python模块编写一个简单的C包装器.我需要做的是创建一个PyObject*代表的新东西None.我无法弄清楚如何做到这一点.是否有一个简单的函数将返回一个PyObject*指向None,类似于如何PyTuple_New返回PyObject*指向新元组或PyString_FromString`返回一个指向python字符串?

注意当调用如下函数时,传递C NULL是否可行?例:

//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);
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 6

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

PyObject* Py_NonePython None对象,表示缺乏价值.这个对象没有方法.它需要像引用计数一样处理任何其他对象.

Py_RETURN_NONE正确处理Py_None从C函数内返回.