需求说明
前一篇《在C++中嵌入Python|调用无参数的函数》中我们成功的在C++主程序中嵌入了Python,并且调用了Python模块中的一个无参数的函数。这一篇我们将在此基础上,实现在主程序中调用Python模块中有参数的函数,使两者互动起来

0 准备say_hi.py模块

在say_hi.py中增加含有一个参数的函数prt_hello和含有两个参数的函数zl_add,完整代码如下图:
嵌入Python | 调用Python模块中有参数的函数-LMLPHP

1 主程序中调用含有一个参数的函数

将主程序中的数据作为参数直接传入Python模块中函数,肯定是不行的,这中间需要进行转换。参数要以tuple元组的形式传入,即需将主程序的数据转换为元组。
主程序源代码:

嵌入Python | 调用Python模块中有参数的函数-LMLPHP

主程序运行结果:

嵌入Python | 调用Python模块中有参数的函数-LMLPHP

2 主程序中调用含有两个参数的函数

通过如下示例介绍一下两种构造参数元组的方法:
主程序源代码:

嵌入Python | 调用Python模块中有参数的函数-LMLPHP

主程序运行结果:

嵌入Python | 调用Python模块中有参数的函数-LMLPHP
其它情况下的参数类似以上的处理方法,详细参考官方文档:https://docs.python.org/3/c-api/arg.html#building-values

3 下篇预告

  • 在主程序中对Python模块中函数的返回值加以解析
  • 总结Py_BuildValue的用法
04-26 16:42
查看更多