jpython 传入参数_C++嵌入Python程序(二):参数传入及返回

本文介绍了C++如何通过jpython嵌入Python程序,讲解了Py_BuildValue和PyArg_ParseTuple函数的用法,以及如何处理元组、列表和类参数,展示了多个示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开始编写程序之前,我们需对下面以下几个常用参数处理函数有个大概的了解:

1)         Py_BuildValue()函数

作用:将C/C++类型类型的数据转变成PyObject*对象。

原型:PyAPI_FUNC(PyObject*) Py_BuildValue(const char *format, ...);(VC中复制过来的),有点类似与printf(format,…).

参数解释:format及转换格式,类似与C语言中%d,%f,后面的不定参数对应前面的格式,具体格式如下:

"s"(string) [char *] :将C字符串转换成Python对象,如果C字符串为空,返回NONE。

"s#"(string) [char *, int] :将C字符串和它的长度转换成Python对象,如果C字符串为空指针,长度忽略,返回NONE。

"z"(string or None) [char *] :作用同"s"。

"z#" (stringor None) [char *, int] :作用同"s#"。

"i"(integer) [int] :将一个C类型的int转换成Python int对象。

"b"(integer) [char] :作用同"i"。

"h"(integer) [short int] :作用同"i"。

"l"(integer) [long int] :将C类型的long转换成Pyhon中的int对象。

"c"(string of length 1) [char] :将C类型的char转换成长度为1的Python字符串对象。

"d"(float) [double] :将C类型的double转换成python中的浮点型对象。

"f"(float) [float] :作用同"d"。

"O&"(object) [converter, anything] :将任何数据类型通过转换函数转换成Python对象,这些数据作为转换函数的参数被调用并且返回一个新的Python对象,如果发生错误返回NULL。

"(items)"(tuple) [matching-items] :将一系列的C值转换成Python元组。

"[items]"(list) [matching-items] :将一系列的C值转换成Python列表。

"{items}"(dictionary) [matching-items] :将一系类的C值转换成Python的字典,每一对连续的C值将转换成一个键值对。

举例:

后面为PyObject的返回值

Py_BuildValue("")None

Py_BuildValue("i",123) 123

Py_BuildValue("iii",123, 456, 789) (123, 456, 789)

Py_BuildValue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值