如何使用 pybind11 在 C++ 中导入基本函数,如 len() 或 help()

How to import basic functions like len() or help() in C++ with pybind11

我是 pybind11 的新手,我正在尝试 import/borrow 简单的 Python 函数,例如 len() 特别是 help() 在我的 C++ 代码中。

请注意,我不想在 C++ 中使用 pybinds.doc(),因为我想提取传递给 Python 函数的参数的名称和类型。

我已经熟悉:

auto fnc = py::reinterpret_borrow< py::function >( 
    py::module::import( "sys" ).attr( "path" ).attr( "append" ) );

但我找不到关于如何在特定 python 模块之外导入函数的任何定义。

感谢@unddoch 提到 buitlins 模块。

不幸的是,help() 默认使用 sys.stdout。因此我转而使用 pydoc.render_doc() 将其作为字符串捕获。

我的工作代码如下所示:

py::function helpFnc = py::reinterpret_borrow< py::function >(
    py::module::import( "pydoc" ).attr("render_doc") );
auto helpResult = helpfunc(pyExecute,"%s",0,py::module::import( "pydoc" ).attr("plaintext"));

std::cout << "Help in C++: " << helpResult.cast<std::string>() << std::endl;