使用pybind11开发python扩展库
Posted caimouse
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用pybind11开发python扩展库相关的知识,希望对你有一定的参考价值。
前面介绍了怎么快速地使用C++11来开发python的扩展库,这样可以更快地提高python的代码运行和计算性能, 这样可以把关键代码做优化,非关键代码就使用python来开发就行了,这样混合开发方式比go更加快方便快捷,性能也比go好,比java更好十倍以上。可以这种方式是无敌的工具组合。
现在来学习怎么样在C++的开发模块里让输入关键字参数,比如像下面这种形式:
import example
example.add(i=1, j=2)
这样i和j就跟位置没有关系了,可以j放在前面,也可以放在后面。在C++的代码里定义这个也非常简单,可以按下面的方式来定义:
//提供关键字参数
m.def("addKey", &add, "A function which adds two numbers",
py::arg("i"), py::arg("j"));
}
在这里使用pybind11定义的参数py::arg()来实现,这个函数主要用来定义关键字参数。通过这样处理之后,函数addKey就可以在python代码里实现关键字参数输入了,如下:
TestAdd.addKey(j = 10, i = 20)
可以看到j = 10放在前面,i = 20放在后面,不会影响到那一个参数的值了。整个例子整合之后,就可以生成C++代码如下:
以上是关于使用pybind11开发python扩展库的主要内容,如果未能解决你的问题,请参考以下文章