boost/python/exec.hpp
はじめに
Python のインタープリタを C++ コードへ組み込む機構をエクスポートする。
関数
eval
exec
exec_file
例
以下の例は、import
と exec
を使用して Python で関数を定義し、後で C++ から呼び出している。
#include <iostream>
#include <string>
using namespace boost::python;
void greet()
{
// main モジュールを得る。
object main = import("__main__");
// main モジュールの名前空間を得る。
object global(main.attr("__dict__"));
// Python 内で greet 関数を定義する。
object result = exec(
"def greet(): \n"
" return 'Hello from Python!' \n",
global, global);
// greet 関数への参照を作成する。
object greet = global["greet"];
// 呼び出す。
std::string message = extract<std::string>(greet());
std::cout << message << std::endl;
}
文字列に Python のスクリプトを組み込む代わりに、ファイルに格納しておいてもよい。
def greet():
return 'Hello from Python!'
代わりにこれを実行する。
// ...
// ファイルから greet 関数を読み込む。
object result = exec_file(script, global, global);
// ...
}