Python 是一種用于快速開(kāi)發(fā)軟件的編程語(yǔ)言,它的語(yǔ)法比較簡(jiǎn)單,易于掌握,但存在執(zhí)行速度慢的問(wèn)題,并且在處理某些問(wèn)題時(shí)存在不足,如對(duì)計(jì)算機(jī)硬件系統(tǒng)的訪問(wèn),對(duì)媒體文件的訪問(wèn)等。而作為軟件開(kāi)發(fā)的傳統(tǒng)編程語(yǔ)言 C 語(yǔ)言,卻能在這些問(wèn)題上很好地彌補(bǔ) Python 語(yǔ)言的不足。因此,本文通過(guò)實(shí)例研究如何在 Python 程序中整合既有的 C 語(yǔ)言模塊,包括用 C 語(yǔ)言編寫(xiě)的源程序和動(dòng)態(tài)鏈接庫(kù)等,從而充分發(fā)揮 Python 語(yǔ)言和 C 語(yǔ)言各自的優(yōu)勢(shì)。
概覽
背景知識(shí)介紹
Python 語(yǔ)言的特點(diǎn)
Python 作為一門(mén)程序開(kāi)發(fā)語(yǔ)言,被越來(lái)越多地運(yùn)用到快速程序開(kāi)發(fā)。Python 是一種解釋型的,互動(dòng)的,面向?qū)ο蟮木幊陶Z(yǔ)言,它包含了模塊化的操作,異常處理,動(dòng)態(tài)資料形態(tài),以及類型的使用。它的語(yǔ)法表達(dá)優(yōu)美易讀,具有很多優(yōu)秀的腳本語(yǔ)言的特點(diǎn):解釋的,面向?qū)ο蟮模瑑?nèi)建的高級(jí)數(shù)據(jù)結(jié)構(gòu),支持模塊和包,支持多種平臺(tái),可擴(kuò)展。而且它還支持交互式方式運(yùn)行,圖形方式運(yùn)行。它擁有眾多的編程界面支持各種操作系統(tǒng)平臺(tái)以及眾多的各類函數(shù)庫(kù),利用 C 和 C++ 可以對(duì)它進(jìn)行擴(kuò)充。
C 語(yǔ)言的特點(diǎn)
C 語(yǔ)言作為最受人們歡迎的語(yǔ)言之一,有廣泛的發(fā)展基礎(chǔ)。簡(jiǎn)潔緊湊、靈活方便,功能強(qiáng)大是其特點(diǎn)。另外,C 語(yǔ)言是一門(mén)中級(jí)語(yǔ)言。它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。由于可以直接訪問(wèn)物理地址,可以方便的對(duì)硬件進(jìn)行操作。因此,很多的系統(tǒng)軟件都是由 C 語(yǔ)言編寫(xiě)。
Python 語(yǔ)言與 C 語(yǔ)言的交互
為了節(jié)省軟件開(kāi)發(fā)成本,軟件開(kāi)發(fā)人員希望能夠縮短的軟件的開(kāi)發(fā)時(shí)間,希望能夠在短時(shí)間內(nèi)開(kāi)發(fā)出穩(wěn)定的產(chǎn)品。Python 功能強(qiáng)大,簡(jiǎn)單易用,能夠快速開(kāi)發(fā)應(yīng)用軟件。但是由于 Python 自身執(zhí)行速度的局限性,對(duì)性能要求比較高的模塊需要使用效率更高的程序語(yǔ)言進(jìn)行開(kāi)發(fā),例如 C 語(yǔ)言,系統(tǒng)的其他模塊運(yùn)用 Python 進(jìn)行快速開(kāi)發(fā),最后將 C 語(yǔ)言開(kāi)發(fā)的模塊與 Python 開(kāi)發(fā)的模塊進(jìn)行整合。在此背景下,基于 Python 語(yǔ)言與 C 語(yǔ)言的各自特點(diǎn),用 C 語(yǔ)言來(lái)擴(kuò)展現(xiàn)有的 Python 程序,顯得很有意義。本文首先介紹幾種常用的整合 Python 程序與 C 語(yǔ)言程序的方法,最后給出相應(yīng)的實(shí)例。
利用 ctypes 模塊整合 Python 程序和 C 程序
ctypes 模塊
ctypes 是 Python 的一個(gè)標(biāo)準(zhǔn)模塊,它包含在 Python2.3 及以上的版本里。ctypes 是一個(gè) Python 的高級(jí)外部函數(shù)接口,它使得 Python 程序可以調(diào)用 C 語(yǔ)言編譯的靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù)。運(yùn)用 ctypes 模塊,能夠在 Python 源程序中創(chuàng)建,訪問(wèn)和操作簡(jiǎn)單的或復(fù)雜的 C 語(yǔ)言數(shù)據(jù)類型。最為重要的是 ctypes 模塊能夠在多個(gè)平臺(tái)上工作,包括 Windows,Windows CE,Mac OS X,Linux,Solaris,F(xiàn)reeBSD,OpenBSD。
新聞熱點(diǎn)
疑難解答
圖片精選