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

Posted 为者常成,行者常至。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入Python | 调用Python模块中有参数的函数相关的知识,希望对你有一定的参考价值。

开发环境
Python版本:3.6.4 (32-bit)
编辑器:Visual Studio Code
C++环境:Visual Studio 2013

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

0 准备say_hi.py模块

在say_hi.py中增加含有一个参数的函数prt_hello和含有两个参数的函数zl_add,完整代码如下图:

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

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

主程序运行结果:

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

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

主程序运行结果:


其它情况下的参数类似以上的处理方法,详细参考官方文档:https://docs.python.org/3/c-api/arg.html#building-values

3 下篇预告

  • 在主程序中对Python模块中函数的返回值加以解析
  • 总结Py_BuildValue的用法

以上是关于嵌入Python | 调用Python模块中有参数的函数的主要内容,如果未能解决你的问题,请参考以下文章

python 如何调用带参数的shell脚本

怎么处理用python 中PyV8模块调用js,js中有window对象的问题?

如何在 boost::python 嵌入式 python 代码中导入模块?

怎样才能让python 脚本像shell命令一样直接运行并可以接收参数

python中命令行参数

Python:从 C 函数中确定模块名称