一.混编文档资料
2.扩展和嵌入 Python 解释器 — Python 2.7.18 文档
可在链接中切换python版本,以及设置文档语言
二.常用接口资料
查看python帮助文档,可以检索所有可用的C函数接口,可参考:
1.如何查用python自带的.chm官方文档-百度经验 (baidu.com)
2.安装python后,在打开python IDLE shell->F1快捷键
三.C++常用接口
说明:Python的接口命名规律简单,熟悉了之后对于辅助查找接口非常有帮助。以下是常用接口的命名规律及一些接口命名例子,具体接口说明详见帮助文档。
1.环境相关接口:Py_XXXX,如
//路径相关
Py_SetPythonHome()
Py_GetPath()
Py_SetPath
//初始化相关
Py_Initialize()
Py_Finalize()
Py_IsInitialized()
2.宏定义:Py_XXXX,如:
//引用计数
Py_INCREF
Py_DECREF
//常用返回值
Py_RETURN_TRUE
Py_RETURN_FALSE
PY_RETURN_NONE
3.对象通用接口:PyObject_XXXX,如:
PyObject_Str
PyObject_HasAttr
PyObject_HasAttrString
PyObject_GetAttr
PyObject_GetAttrString
PyObject_SetAttr
PyObject_SetAttrString
PyObject_DelAttr
PyObject_DelAttrString
PyObject_IsInstance
PyObject_IsTrue
PyObject_Not
PyObject_Type
PyObject_GetItem
PyObject_DelItem
PyObject_Dir
4.数据结构象接口:PyType_XXXX,如:
//列表
PyList_XX
PyList_GetItem
PyList_SetItem
PyList_AsTuple
PyList_Sort
PyList_Size
//字典
PyDict_XX
PyDict_Update
PyDict_Size
PyDict_New
PyDict_Keys
PyDict_SetItem
//集合
PySet_XXX
PySet_Add
PySet_New
PySet_Pop
//元组
PyTuple_XXX
PyTuple_New
PyTuple_Size
PyTuple_SetItem
5.整形对象转换接口:
//C++对象转换为PyObjec*对象
PyLong_FromXXXX
//PyObject*对象转换为C++对象
PyLong_AsXXXX
6.Python参数转换接口,PyArg_XXXX,如:
PyArg_ParseTuple
PyArg_VaParse
转换的参数类型如下:
i (int) [int]
l (int) [long int]
k (int) [unsigned long]
L (int) [long long]
d (float) [double]
f (float) [float]
O (object) [PyObject *]
static PyObject *test_func(PyObject *self, PyObject *args)
{
char *str, *str2= NULL;
int value = ;
/* Parse arguments */
if(!PyArg_ParseTuple(args, "ssi", &str, &str2, &value)) {
return NULL;
}
// do sth to params..
}
7.基础PyObject*对象构建接口:Py_BuildValue,如:
Py_BuildValue("") None
Py_BuildValue("i", 123) 123
Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Py_BuildValue("s", "hello") 'hello'
Py_BuildValue("ss", "hello", "world") ('hello', 'world')
Py_BuildValue("s#", "hello", 4) 'hell'
Py_BuildValue("()") ()
Py_BuildValue("(i)", 123) (123,)
Py_BuildValue("(ii)", 123, 456) (123, 456)
Py_BuildValue("(i,i)", 123, 456) (123, 456)
Py_BuildValue("[i,i]", 123, 456) [123, 456]
Py_BuildValue("{s:i,s:i}",
"abc", 123, "def", 456) {'abc': 123, 'def': 456}
Py_BuildValue("((ii)(ii)) (ii)",
1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))