栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

c++ 如何调用 python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 如何调用 python

C++怎么向Python传递参数

C++向Python传参数是以元组(tuple)的方式传过去的,因此我们实际上就是构造一个合适的Python元组就可以了,要用到PyTuple_New,Py_BuildValue,PyTuple_SetItem等几个函数

1.	PyObject* pyParams = PyTuple_New(2);
	PyObject* pyParams1= Py_BuildValue("i",5);
	PyObject* pyParams2= Py_BuildValue("i",6);
	PyTuple_SetItem(pyParams,0, pyParams1);
	PyTuple_SetItem(pyParams,1, pyParams2);
2.	PyObject* args = PyTuple_New(2);  //Return a new tuple object of size 2
	PyTuple_SetItem(args, 0, Py_BuildValue("i", 5));//参数一设为int,5
	PyTuple_SetItem(args, 1, Py_BuildValue("i", 6));//参数二设为int,6

也可以直接使用PyObject* Py_BuildValue(char *format, ...) 函数来直接来构造tuple,此函数的使用也很简单,记住一些转换的格式常量即可轻松进行转换(格式常量有点类似printf,参考[9])。譬如s 表示字符串,i表示整型变量,f表示浮点数,o表示一个Python对象等等。

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

1.9 The Py_BuildValue() Function

C++怎么转换Python的返回值

Python传回给C++的都是PyObject对象,因此可以调用Python里面的一些类型转换API来把返回值转换成C++里面的类型

类似PyInt_AsLong,PyFloat_AsDouble这些系列的函数。Python比较喜欢传回一个元组,可以使用PyArg_ParseTuple这个函数来解析(用来判断返回值是否设计要求)。这个函数也要用到上面的格式常量(参考[10])。还有一个比较通用的转换函数是PyArg_Parse,也需要用到格式常量,够不够强大,用了就知道了。

【10】1.7 Format Strings for PyArg_ParseTuple()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675228.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号