91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++項目中如何調用python函數

發布時間:2022-04-14 16:33:19 來源:億速云 閱讀:193 作者:iii 欄目:編程語言

這篇文章主要介紹“C++項目中如何調用python函數”,在日常操作中,相信很多人在C++項目中如何調用python函數問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++項目中如何調用python函數”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

代碼如下,分別演示直接執行python語句、無返回無參數函數調用、返回單參數函數調用。返回多參數函數調用:
 

 #include <Python.h>
  #include <iostream>
  using namespace std;
  //執行python命令
  void ExecPythonCommand()
  {
  //直接執行 

  PyRun_SimpleString("from time import time,ctime\n"
  "print 'Today is',ctime(time())\n");
  }
  //調用無參數函數
  void InvokeNoParm()
  {
  PyObject* pMod = NULL;
  PyObject* pFunc = NULL;
  //導入模塊
  pMod = PyImport_ImportModule("Life");
  if(pMod)
  {
  //獲取函數地址
  pFunc = PyObject_GetAttrString(pMod, "a");
  if(pFunc)
  {
  //函數調用
  PyEval_CallObject(pFunc, NULL);
  }
  else
  {
  cout << "cannot find function a" << endl;
  }
  }
  else
  {
  cout << "cannot find Life.py" << endl;
  }
  }

  //調用一參數函數
 

 void InvokeWith2Parm()
  {
  PyObject* pMod = NULL;
  PyObject* pFunc = NULL;
  PyObject* pParm = NULL;
  PyObject* pRetVal = NULL;
  int   iRetVal = 0;
  //導入模塊
  pMod = PyImport_ImportModule("FuncDef");
  if(pMod)
  {
  pFunc = PyObject_GetAttrString(pMod, "square");
  if(pFunc)
  {
  //創建參數
  pParm = Py_BuildValue("(i)", 5);
  //函數調用
  pRetVal = PyEval_CallObject(pFunc, pParm);
  //解析返回值
  PyArg_Parse(pRetVal, "i", &iRetVal);
  cout << "square 5 is: " << iRetVal << endl;
  }
  else
  {
  cout << "cannot find function square" << endl;
  }
  }
  else
  {
  cout << "cannot find FuncDef.py" << endl;
  }
  }

//調用多參數函數

 void InvokeWith3Parm()
  {
  PyObject* pMod = NULL;
  PyObject* pFunc = NULL;
  PyObject* pParm = NULL;
  PyObject* pRetVal = NULL;
  int   iRetVal = 0;
  //導入模塊
  pMod = PyImport_ImportModule("add");
  if(pMod)
  {
  pFunc = PyObject_GetAttrString(pMod, "add");
  if(pFunc)
  {
  //創建兩個參數
  pParm = PyTuple_New(2);
  //為參數賦值
  PyTuple_SetItem(pParm, 0, Py_BuildValue("i",2000));
  PyTuple_SetItem(pParm, 1, Py_BuildValue("i",3000));
  //函數調用
  pRetVal = PyEval_CallObject(pFunc, pParm);
  //解析返回值
  PyArg_Parse(pRetVal, "i", &iRetVal);
  cout << "2000 + 3000 = " << iRetVal << endl;
  }
  else
  {
  cout << "cannot find function square" << endl;
  }
  }
  else
  {
  cout << "cannot find add.py" << endl;
  }
  }
 int main(int argc, char* argv[])
  {
  Py_Initialize(); //python 解釋器的初始化
  ExecPythonCommand();
  InvokeNoParm();
  InvokeWith2Parm();
  InvokeWith3Parm();
  Py_Finalize();  // 垃圾回收、清除導入庫
  return 0;
  }

到此,關于“C++項目中如何調用python函數”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲靖市| 白朗县| 海安县| 富源县| 阜城县| 胶州市| 桦甸市| 元阳县| 开平市| 泌阳县| 北安市| 宾阳县| 莫力| 合肥市| 新田县| 苗栗县| 阜宁县| 仪陇县| 永昌县| 邹平县| 白朗县| 资源县| 大理市| 儋州市| 平远县| 潜山县| 凤城市| 山西省| 弥勒县| 古丈县| 浑源县| 湘阴县| 土默特左旗| 晋州市| 九龙县| 卢氏县| SHOW| 英山县| 玉树县| 利川市| 申扎县|