basic.cpp

来自「python c扩展编写例子」· C++ 代码 · 共 67 行

CPP
67
字号

#include <Python.h>

int
main(int argc, char *argv[])
{
	Py_Initialize();
	PyRun_SimpleString("from time import time,ctime\n"
		"print 'Today is',ctime(time())\n");

	char *cstr;

	PyObject *pstr, *pmod, *pdict;
	PyObject *pfunc, *pargs;

	/* get mymod.message */
	pmod  = PyImport_ImportModule("mymod");
	pdict = PyModule_GetDict(pmod);
	pstr  = PyRun_String("message", Py_eval_input, pdict, pdict);
	/* convert to C */
	PyArg_Parse(pstr, "s", &cstr);
	printf("%s\n", cstr);

	pstr  = PyRun_String("message", Py_eval_input, pdict, pdict);
	PyArg_Parse(pstr, "s", &cstr);
	printf("%s\n", cstr);


	pfunc = PyObject_GetAttrString(pmod, "change_msg");
	pargs = Py_BuildValue("(s)", "nul");
	pstr  = PyEval_CallObject(pfunc, pargs);
	PyArg_Parse(pstr, "s", &cstr);
	printf("%s\n", cstr);


	pfunc = PyObject_GetAttrString(pmod, "get_msg");
	pargs = Py_BuildValue("(s)", "nul");
	pstr  = PyEval_CallObject(pfunc, pargs);
	PyArg_Parse(pstr, "s", &cstr);
	printf("%s\n", cstr);

	
	pfunc = PyObject_GetAttrString(pmod, "r_file");
	pargs = Py_BuildValue("(s)", "nul");
	pstr  = PyEval_CallObject(pfunc, pargs);
	PyArg_Parse(pstr, "s", &cstr);
	printf("%s\n", cstr);

	//PyRun_String("change_msg()", Py_file_input, pdict, pdict);

	pstr  = PyRun_String("message", Py_eval_input, pdict, pdict);
	PyArg_Parse(pstr, "s", &cstr);
	printf("%s\n", cstr);

	/* call mymod.transform(mymod.message) */
	pfunc = PyObject_GetAttrString(pmod, "transform");
	cstr="this is hjs's test, to uppercase";
	pargs = Py_BuildValue("(s)", cstr);
	pstr  = PyEval_CallObject(pfunc, pargs);
	PyArg_Parse(pstr, "s", &cstr);
	printf("%s\n", cstr);


	Py_Finalize();
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?