c調用python返回值
『壹』 python函數多個返回值怎麼調用
在c/c++中調用了這個函數之後不是會返回一個pyobject對象嗎?那個對象就是一個list啊,然後使用pylist_size()獲取它的大小,使用pylist_getitem()去讀取其中的元素就ok了啊。
找下python的c
api
manual,裡面這些函數的用法寫的很詳細的。
『貳』 c/c++調用python中返回值為list的函數
在C/C++中調用了這個函數之後不是會返回一個PyObject對象嗎?那個對象就是一個List啊,然後使用PyList_Size()獲取它的大小,使用PyList_GetItem()去讀取其中的元素就ok了啊。
找下Python的C API Manual,裡面這些函數的用法寫的很詳細的。
『叄』 c可以調用python嗎
可以的。
C中內嵌Python
新建立一個工程,首先需要將工作目錄設置到Python-3.1.1PCbuild中,以獲取到動態庫,至於靜態庫的包含,Include目錄的指定,那自然也是少不了的。文件中需要包含Python.h文件,這也是必須的。
介面中
Py_Initialize();
Py_Finalize();
其他的根據需求,再引入相應的python builder 即可
『肆』 python 調用c++程序, c++程序如何返回數組給python
C/C++不能直接返回一個數組。這是由於在C/C++中,數組不是一種類型,因此不能被直接返回。
一般有兩種方法來返回一個數組。
第一種方法:
返回一個指向數組的指針,例如char (*retArray)[10]聲明了一個函數retArray,該函數可以返回指向具有10個char元素的數組
第二種方法:
如果你不喜歡用指針的形式返回數組,那麼可以採用返回一個結構的形式。這種形式相對較安全,可以避免忘記釋放指針而造成內存泄露,也可以避免訪問懸掛指針造成的錯誤。但缺點是由於結構是先拷貝再返回,因此如果結構較大時,會影響效率和佔用較大內存。
這是C的限制,Python調用C也是這種情況
『伍』 c語言程序如何調用python程序
下面是一個例子:
首先是python的一個簡單函數
class Hello:
def __init__(self, x):
self.a = x
def print(self, x=None):
print(x)
def xprint():
print("hello world")
if __name__ == "__main__":
xprint()
h = Hello(5)
h.print()1
下面是C語言
#include <python3.4m/Python.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
Py_Initialize();
// 將當前目錄加入sys.path
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
// 導入hello.py模塊
PyObject *pmole = PyImport_ImportMole("hello");
// 獲得函數xprint對象,並調用,輸出「hello world\n」
PyObject *pfunc = PyObject_GetAttrString(pmole, "xprint");
PyObject_CallFunction(pfunc, NULL);
// 獲得類Hello並生成實例pinstance,並調用print成員函數,輸出「5 6\n」
PyObject *pclass = PyObject_GetAttrString(pmole, "Hello");
PyObject *arg = Py_BuildValue("(i)", 5);
PyObject *pinstance = PyObject_Call(pclass, arg, NULL);
PyObject_CallMethod(pinstance, "print", "i", 6);
Py_Finalize();
return 0;
}
編譯命令如下:
gcc pyapi.c -lpython3.4m -o pyapi
『陸』 python 函數返回值返回到哪裡
python 函數返回值有兩種形式: 1 返回一個值。 2 返回多個值。 現看看返回一個值的吧。
def firstvalue(a,b):
c = a + b
return c
print firstvalue(1,2)結果:3
再看看返回多個值的: 那怎麼可以返回多個值呢,其他的語言一般調用函數的話,只能返回一個值,可能我不太熟悉所有的語言,我知道的語言只能返回一個值,而python可以返回多個值,感覺非常方便,發代碼看下:
def secondvalue(a,b):
c = a + b
return (a,b,c)
x,y,z = secondvalue(1,2)
print 'x:',x,'y:',y,'z:',z
可能上面的東西寫的有點簡單,但是有的細節處理也很重要。順便分享下我如何學習python的經歷把,大家沒事拍拍磚。
『柒』 python中,怎麼讓類返回值啊
類本身是不能調用的,怎麼會有返回值呢?
類的構造函數也就是 類名(參數..) 返回的一個類的實例。
能返回值的只有類裡面的方法。
classA:
c=2
defa(self):
return1
b=A()#=>返回<__main__.Ainstanceat....>
b.a()#=>返回整形數值1
b.c#=>返回整形數值2
『捌』 python 怎麼調用c語言介面
ctypes: 可直接調用c語言動態鏈接庫。
使用步驟:
1> 編譯好自己的動態連接庫
2> 利用ctypes載入動態連接庫
3> 用ctype調用C函數介面時,需要將python變數類型做轉換後才能作為函數參數,轉換原則見下圖:
#Step1:test.c#include<stdio.h>
intadd(inta,intb)
{
returna+b;
}#Step2:編譯動態鏈接庫(如何編譯動態鏈接庫在本文不詳解,網上資料一大堆。)gcc-fPIC-sharedtest.c-olibtest.so
#Step3:test.py
fromctypesimport*mylib=CDLL("libtest.so")或者cdll.LoadLibrary("libtest.so")add=mylib.add
add.argtypes=[c_int,c_int]#參數類型,兩個int(c_int是ctypes類型,見上表)
add.restype=c_int#返回值類型,int(c_int是ctypes類型,見上表)
sum=add(3,6)
『玖』 c如何調用python程序
C語言如何調用python,相關步驟如下:
首先,C語言中調用python,要使用頭文件Python.h。
2、接著,定義一個調用python的函數。
相關推薦:《Python教程》
3、函數中,設置python庫的路徑。
4、然後,初始化python。
5、運行一個python代碼,輸出How are you。
6、最後,釋放python。
『拾』 如何在C語言中調用python函數
C語言不能直接調用Python源程序,但是可以通過進程調用來實現。