Listing 5. Using Callable Function References #include void process_expression(int num, char* func_name) { FILE* exp_file; PyObject* main_module, * global_dict, * expression; // Initialize a global variable for // display of expression results PyRun_SimpleString("x = 0"); // Open and execute the Python file exp_file = fopen(exp, "r"); PyRun_SimpleFile(exp_file, exp); // Get a reference to the main module // and global dictionary main_module = PyImport_AddModule("__main__"); global_dict = PyModule_GetDict(main_module); // Extract a reference to the function "func_name" // from the global dictionary expression = PyDict_GetItemString(global_dict, func_name); while(num--) { // Make a call to the function referenced // by "expression" PyObject_CallObject(expression, NULL); } PyRun_SimpleString("print x"); }