为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > python返回值

python返回值

2018-04-10 7页 doc 22KB 9阅读

用户头像

is_833902

暂无简介

举报
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返回值
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,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索