python返回值python返回值
[cpp] view plaincopyprint?
1. #include
2. #include
3.
4. using namespace std;
5.
6. void HelloWorld();
7. void Add();
8. void TestTransferDict();
9. void TestClass();
10.
11. int main()
12. {
13. cout << "Starting Test..." << endl; 14.
15...
python返回值
[cpp] view plaincopyprint?
1. #include
2. #include
3.
4. using namespace std;
5.
6. void HelloWorld();
7. void Add();
8. void TestTransferDict();
9. void TestClass();
10.
11. int main()
12. {
13. cout << "Starting Test..." << endl; 14.
15. cout << "HelloWorld()-------------" << endl; 16. HelloWorld();
17. cout << "Add()--------------------" << endl; 18. Add();
19. cout << "TestDict-----------------" << endl; 20. TestTransferDict();
21. cout << "TestClass----------------" << endl; 22. TestClass();
23.
24. system("pause");
25. return 0;
26. }
27.
28. //调用输出"Hello World"函数
29. void HelloWorld()
30. {
31. Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化
32. PyObject * pModule = NULL;//声明变量 33. PyObject * pFunc = NULL;//声明变量
34. pModule =PyImport_ImportModule("Test001");//这里是要调用的Python文件名
35. pFunc= PyObject_GetAttrString(pModule, "HelloWorld"); //这里是要调用的函数名
36. PyEval_CallObject(pFunc, NULL); //调用函数,NULL示参数为空
37. Py_Finalize();//调用Py_Finalize,这个和Py_Initialize相对应的.
38. }
39.
40. //调用Add函数,传两个int型参数
41. void Add()
42. {
43. Py_Initialize();
44.
45. PyObject * pModule = NULL;
46. PyObject * pFunc = NULL;
47. pModule =PyImport_ImportModule("Test001");//Test001:Python文件名 48. pFunc= PyObject_GetAttrString(pModule,"add");//Add:Python文件中的函数名 //
创建参数
49. PyObject *pArgs = PyTuple_New(2); //函数调用的参数传递均是以元组的形式打包的,2表
示参数个数
50. PyTuple_SetItem(pArgs, 0, Py_BuildValue("i", 5));//0---序号i表示创建int型变
量
51. PyTuple_SetItem(pArgs, 1, Py_BuildValue("i", 7));//1---序号//返回值 52. PyObject *pReturn = NULL;
53. pReturn = PyEval_CallObject(pFunc, pArgs);//调用函数 54. //将返回值转换为int类型
55. int result;
56. PyArg_Parse(pReturn, "i", &result);//i表示转换成int型变量 57. cout << "5+7 = " << result << endl;
58.
59. Py_Finalize();
60. }
61.
62. //参数传递的类型为字典
63. void TestTransferDict()
64. {
65. Py_Initialize();
66.
67. PyObject * pModule = NULL;
68. PyObject * pFunc = NULL;
69. pModule =PyImport_ImportModule("Test001");//Test001:Python文件名 70. pFunc= PyObject_GetAttrString(pModule, "TestDict"); //Add:Python文件中的函数
名
71. //创建参数:
72. PyObject *pArgs = PyTuple_New(1);
73. PyObject *pDict = PyDict_New(); //创建字典类型变量
74. PyDict_SetItemString(pDict, "Name", Py_BuildValue("s", "WangYao")); //往字典
类型变量中填充数据
75. PyDict_SetItemString(pDict, "Age", Py_BuildValue("i", 25)); //往字典类型变量中
填充数据
76. PyTuple_SetItem(pArgs, 0, pDict);//0---序号将字典类型变量添加到参数元组中 77. //返回值
78. PyObject *pReturn = NULL;
79. pReturn = PyEval_CallObject(pFunc, pArgs);//调用函数 80. //处理返回值:
81. int size = PyDict_Size(pReturn);
82. cout << "返回字典的大小为: " << size << endl; 83. PyObject *pNewAge = PyDict_GetItemString(pReturn, "Age");
84. int newAge;
85. PyArg_Parse(pNewAge, "i", &newAge); 86. cout << "True Age: " << newAge << endl; 87.
88. Py_Finalize();
89. }
90.
91. //测试类
92. void TestClass()
93. {
94. Py_Initialize();
95.
96. PyObject * pModule = NULL;
97. PyObject * pFunc = NULL;
98. pModule =PyImport_ImportModule("Test001");//Test001:Python文件名
99. pFunc= PyObject_GetAttrString(pModule, "TestDict"); //Add:Python文件中的函数
名
100. //获取Person类
101. PyObject *pClassPerson = PyObject_GetAttrString(pModule, "Person");
102. //创建Person类的实例
103. PyObject *pInstancePerson = PyInstance_New(pClassPerson, NULL, NULL);
104. //调用方法
105. PyObject_CallMethod(pInstancePerson, "greet", "s", "Hello Kitty"); //s表示
传递的是字符串,值为"Hello Kitty"
106.
107. Py_Finalize();
108. }
4. python代码
[python] view plaincopyprint?
1. #Test001.py
2. def HelloWorld():
3. print "Hello World"
4. def add(a, b):
5. return a+b
6. def TestDict(dict):
7. print dict
8. dict["Age"] = 17
9. return dict
10. class Person:
11. def greet(self, greetStr): 12. print greetStr
13. #print add(5,7)
14. #a = raw_input("Enter To Continue...")
本文档为【python返回值】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。