新聞中心
如何在C語(yǔ)言中調(diào)用python函數(shù)
C語(yǔ)言不能直接調(diào)用Python源程序,但是可以通過(guò)進(jìn)程調(diào)用來(lái)實(shí)現(xiàn)。
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)站空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、忻府網(wǎng)站維護(hù)、網(wǎng)站推廣。
C語(yǔ)言程序如何調(diào)用python程序
下面是一個(gè)例子:
首先是python的一個(gè)簡(jiǎn)單函數(shù)
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語(yǔ)言
#include python3.4m/Python.h
#include stdio.h
#include stdlib.h
#include string.h
int main()
{
Py_Initialize();
// 將當(dāng)前目錄加入sys.path
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
// 導(dǎo)入hello.py模塊
PyObject *pmodule = PyImport_ImportModule("hello");
// 獲得函數(shù)xprint對(duì)象,并調(diào)用,輸出“hello world\n”
PyObject *pfunc = PyObject_GetAttrString(pmodule, "xprint");
PyObject_CallFunction(pfunc, NULL);
// 獲得類(lèi)Hello并生成實(shí)例pinstance,并調(diào)用print成員函數(shù),輸出“5 6\n”
PyObject *pclass = PyObject_GetAttrString(pmodule, "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與c語(yǔ)言的關(guān)系
1、語(yǔ)言類(lèi)型不同
Python是一種動(dòng)態(tài)類(lèi)型語(yǔ)言,又是強(qiáng)類(lèi)型語(yǔ)言;C語(yǔ)言是靜態(tài)類(lèi)型語(yǔ)言,在編譯期間就確定數(shù)據(jù)類(lèi)型的語(yǔ)言;
2、內(nèi)存管理不同
Python使用自動(dòng)垃圾收集器進(jìn)行內(nèi)存管理;C語(yǔ)言中程序員必須自己進(jìn)行內(nèi)存管理;
3、對(duì)象機(jī)制不同
Python所有的數(shù)據(jù),都是由對(duì)象或者對(duì)象之間的關(guān)系表示的,函數(shù)是對(duì)象,字符串是對(duì)象,每個(gè)東西都是對(duì)象的概念;C語(yǔ)言中沒(méi)有對(duì)象這個(gè)概念,只有數(shù)據(jù)的表示。
4、運(yùn)行效率不同
Python有一個(gè)GIL鎖,導(dǎo)致其對(duì)多線(xiàn)程支持不夠好,運(yùn)行速度比較慢;C語(yǔ)言比較快,是很好的底層語(yǔ)言,運(yùn)行效率上優(yōu)于Python。
5、變量類(lèi)型不同
Python有六個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類(lèi)型,包含Number數(shù)字、String字符串、List列表、Tuple元祖、Sets集合、Dictionary字典;數(shù)字類(lèi)型有四種,包含:整數(shù)、布爾型、浮點(diǎn)數(shù)和復(fù)數(shù)。C語(yǔ)言也分為四大類(lèi),其中包含基本類(lèi)型、枚舉類(lèi)型、void的類(lèi)型、派生類(lèi)型,基本類(lèi)型包含整數(shù)類(lèi)型、浮點(diǎn)類(lèi)型。
6、函數(shù)庫(kù)的使用方法不同
C語(yǔ)言中使用庫(kù)函數(shù),需要引入頭文件用include引入;Python中需要引入別的模塊或者函數(shù)時(shí)需要用import引入。
當(dāng)前名稱(chēng):c語(yǔ)言python函數(shù) python怎么調(diào)用c語(yǔ)言
地址分享:http://fisionsoft.com.cn/article/ddgocos.html