converts values to python objects we used both of the data conversion functions earlier in this in extension modules the pyeval_callobject call in this version of the example is the key point hereit runs the imported function with tuple of argumentsmuch like the python func(*argscall syntax the python function' return value comes back to as pyobject* generic python object pointer example - pp \integrate\embed\basics\embed-object /fetch and call objects in modules *#include main(char *cstrpyobject *pstr*pmod*pfunc*pargsprintf("embed-object\ ")py_initialize()/get usermod message *pmod pyimport_importmodule("usermod")pstr pyobject_getattrstring(pmod"message")/convert string to *pyarg_parse(pstr" "&cstr)printf("% \ "cstr)py_decref(pstr)/call usermod transform(usermod message*pfunc pyobject_getattrstring(pmod"transform")pargs py_buildvalue("( )"cstr)pstr pyeval_callobject(pfuncpargs)pyarg_parse(pstr" "&cstr)printf("% \ "cstr)/free owned objects *py_decref(pmod)py_decref(pstr)py_decref(pfunc)/not really needed in main(*py_decref(pargs)/since all memory goes away *py_finalize()when compiled and runthe result is the same again/pp /integrate/embed/basics/embed-object embed-object the meaning of life the meaning of python howeverthis output is generated by this time--firstby fetching the python module' message attribute valueand then by fetching and calling the module' transform basic embedding techniques