本文小編為大家詳細介紹“C++項目如何調(diào)用python函數(shù)”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“C++項目如何調(diào)用python函數(shù)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了五華免費建站歡迎大家使用!
代碼如下,分別演示直接執(zhí)行python語句、無返回無參數(shù)函數(shù)調(diào)用、返回單參數(shù)函數(shù)調(diào)用。返回多參數(shù)函數(shù)調(diào)用:
#include <Python.h>
#include <iostream>
using namespace std;
//執(zhí)行python命令
void ExecPythonCommand()
{
//直接執(zhí)行
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
}
//調(diào)用無參數(shù)函數(shù)
void InvokeNoParm()
{
PyObject* pMod = NULL;
PyObject* pFunc = NULL;
//導(dǎo)入模塊
pMod = PyImport_ImportModule("Life");
if(pMod)
{
//獲取函數(shù)地址
pFunc = PyObject_GetAttrString(pMod, "a");
if(pFunc)
{
//函數(shù)調(diào)用
PyEval_CallObject(pFunc, NULL);
}
else
{
cout << "cannot find function a" << endl;
}
}
else
{
cout << "cannot find Life.py" << endl;
}
}
//調(diào)用一參數(shù)函數(shù)
void InvokeWith2Parm()
{
PyObject* pMod = NULL;
PyObject* pFunc = NULL;
PyObject* pParm = NULL;
PyObject* pRetVal = NULL;
int iRetVal = 0;
//導(dǎo)入模塊
pMod = PyImport_ImportModule("FuncDef");
if(pMod)
{
pFunc = PyObject_GetAttrString(pMod, "square");
if(pFunc)
{
//創(chuàng)建參數(shù)
pParm = Py_BuildValue("(i)", 5);
//函數(shù)調(diào)用
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;
}
}
//調(diào)用多參數(shù)函數(shù)
void InvokeWith3Parm()
{
PyObject* pMod = NULL;
PyObject* pFunc = NULL;
PyObject* pParm = NULL;
PyObject* pRetVal = NULL;
int iRetVal = 0;
//導(dǎo)入模塊
pMod = PyImport_ImportModule("add");
if(pMod)
{
pFunc = PyObject_GetAttrString(pMod, "add");
if(pFunc)
{
//創(chuàng)建兩個參數(shù)
pParm = PyTuple_New(2);
//為參數(shù)賦值
PyTuple_SetItem(pParm, 0, Py_BuildValue("i",2000));
PyTuple_SetItem(pParm, 1, Py_BuildValue("i",3000));
//函數(shù)調(diào)用
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(); // 垃圾回收、清除導(dǎo)入庫
return 0;
}
讀到這里,這篇“C++項目如何調(diào)用python函數(shù)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站欄目:C++項目如何調(diào)用python函數(shù)
新聞來源:http://www.rwnh.cn/article16/ipcsdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、網(wǎng)站制作、、電子商務(wù)、軟件開發(fā)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)