zl程序教程

您现在的位置是:首页 >  后端

当前栏目

使用pybind11开发python扩展库(1)

2023-09-14 09:10:05 时间

前面介绍了怎么快速地使用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++代码如下: