30 Ekim 2017 Pazartesi

python exec metodu

Giriş
Açıklaması şöyle

Effects

Execute Python source code from code in the context specified by the dictionaries globals and locals.

Returns

An instance of object which holds the result of executing the code.
C++ içinde Python kodunu çalıştırır.

Örnek
Şöyle yaparız.
using namespace boost::python;

Py_Initialize();

object main_module = import("__main__");
object main_namespace = main_module.attr("__dict__");

try
{
  std::string comm = ...;

  object bar = exec(comm.c_str(), main_namespace);
  if (bar.is_none())
    std::cout << "None\n";
}
catch (error_already_set const &)
{
  PyErr_Print();
}
Örnek
Şöyle yaparız.
const char *prog = "def ack(m, n):\n"
                     "  if m == 0:\n"
                     "    return n + 1\n"
                     "  elif n == 0:\n"
                     "    return ack(m - 1, 1)\n"
                     "  else:\n"
                     "    return ack(m - 1, ack(m, n - 1))";

Py_Initialize();

boost::python::object mainModule = boost::python::import("__main__");
boost::python::object mainNamespace = mainModule.attr("__dict__");

boost::python::exec(prog, mainNamespace, mainNamespace);
int val = boost::python::extract<int>(
  boost::python::eval("ack(3,3)", mainNamespace, mainNamespace));

Hiç yorum yok:

Yorum Gönder