Cha*_*l72 7 python python-c-api python-c-extension python-3.x
我正试图弄清楚如何使用C语言的Python解释器,我遇到了麻烦PyEval_EvalCode.基本上,我正在编写一个C函数,它接受任意Python代码串,编译它,执行它,然后打印出结果.
问题在于,当我打印出结果时,我总是得到None,即使表达式显然没有评估None.
这是代码(为清楚起见,删除了错误检查和引用计数):
void eval(const char* s)
{
PyCodeObject* code = (PyCodeObject*) Py_CompileString(s, "test", Py_file_input);
PyObject* main_module = PyImport_AddModule("__main__");
PyObject* global_dict = PyModule_GetDict(main_module);
PyObject* local_dict = PyDict_New();
PyObject* obj = PyEval_EvalCode(code, global_dict, local_dict);
PyObject* result = PyObject_Str(obj);
PyObject_Print(result, stdout, 0);
}
Run Code Online (Sandbox Code Playgroud)
我尝试将此函数"5 + 5"作为输入调用,并显示None.我使用PyEval_EvalCode不正确吗?
| 归档时间: |
|
| 查看次数: |
4820 次 |
| 最近记录: |