C++Python混编常用接口

一.混编文档资料

1.Python 2.7.18 文档

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)) 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值