Как вызвать встроенную функцию python в c с помощью pybind11

#python #c #pybind11

#python #c #pybind11

Вопрос:

Я использую pybind11 для вызова встроенной функции python, такой как range, в коде c . Но я нашел только способ вызвать функцию в модуле, подобном этому:

 py::object os = py::module::import("os");
py::object makedirs = os.attr("makedirs");
makedirs("/tmp/path/to/somewhere");
  

Но встроенной функции python, такой как range, не нужно импортировать какие-либо модули, так как я могу использовать pybind11 для вызова range в коде c ?

Ответ №1:

Вы могли бы извлекать range данные из globals dict.

Ответ №2:

Вы также можете импортировать builtins модуль, который содержит все встроенные функции python.

В вашем случае это было бы что-то вроде:

 py::object builtins = py::module_::import("builtins");
py::object range = builtins.attr("range");
range(0, 10);