日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

c调用python函数_C调用Python的函数

發布時間:2025/3/20 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c调用python函数_C调用Python的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 /*2 module: Python腳步的模塊名3 function: 要調用的函數名4 format: 傳遞給Py_VaBuildValue函數的可變參數模板5 */6 intPyCall(constchar*module,constchar*function,constchar*format, ... )7 {8 PyObject*pMod=NULL;9 PyObject*pFunc=NULL;10 PyObject*pParm=NULL;11 PyObject*pRetVal=NULL;12 13 //導入模塊14 if(!(pMod=PyImport_ImportModule(module) ) ){15 return-1;16 }17 //查找函數18 if(!(pFunc=PyObject_GetAttrString(pMod, function) ) ){19 return-2;20 }21 22 //創建參數23 va_list vargs;24 va_start( vargs, format );25 pParm=Py_VaBuildValue( format, vargs );26 va_end(vargs);27 28 //函數調用29 pRetVal=PyEval_CallObject( pFunc, pParm);30 31 //假定返回值為整形32 intret;33 PyArg_Parse( pRetVal,"i",&ret );34 returnret;35 }36 37 intmain(intargc,char*argv[])38 {39 Py_Initialize();40 41 /*這做個簡單的說明42 ** format參數用()擴起來是表示元組的意思。元組中的個數對應Python腳本中的參數。43 ** 因為fun,fun1,fun2函數的參數個數分別是 0,1,2,所以,元組中的個數必須為0,1,2,不然調用將失44 ** 敗。當然,元組中的每個元素都是可以為任意的類型,比如:45 ** PyCall( "pytest", "fun2", "( i,{s:s,s:s})", 2, "name", "linxr", "age", "25" );46 */47 printf("ret = %d\n", PyCall("pytest","fun","()");48 printf("ret = %d\n", PyCall("pytest","fun1","(i)",12);49 printf("ret = %d\n", PyCall("pytest","fun2","(is)",12,"12");50 51 Py_Finalize();52 53 return0;54 }

總結

以上是生活随笔為你收集整理的c调用python函数_C调用Python的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。