前言:尋找寫作靈感?中文期刊網(wǎng)用心挑選的Python的混合語言編程和實現(xiàn)探討,希望能為您的閱讀和創(chuàng)作帶來靈感,歡迎大家閱讀并分享。
摘要:python屬于ABC語言替代品,能夠為語言編程提供高效、高級的數(shù)據(jù)結構,有效面對對象進行編程操作。Python編程語言的設計風格一般比較清晰統(tǒng)一,這使得Python編程語言能夠簡單易懂,維護起來也十分便利,所以被很多大眾所接受和喜歡,應用推廣速度比較快。Python是目前一種常用的腳本語言,在混合語言編程的軟件開發(fā)中具有很好的應用效果。該文對Python編程語言進行論述,研究Python編程語言的語言風格、語言優(yōu)點等,并探究其在混合語言編程中的應用和實現(xiàn)。
關鍵詞:Python;混合語言編程;數(shù)據(jù)分析;軟件
1Python編程語言風格和優(yōu)點
1.1語言風格
Python屬于ABC語言替代品,能夠為語言編程提供高效、高級的數(shù)據(jù)結構,有效面對對象進行編程操作[1]。Python編程語言的設計風格一般比較清晰統(tǒng)一,這使得Python編程語言能夠簡單易懂,維護起來也十分便利,所以被很多大眾所接受和喜歡,應用推廣速度比較快[2]。Python編程語言開發(fā)以特定的問題為基礎,選擇最有效的方式來解決問題[3]。Python編程語言具有一定的限制性,在編程中,不良的編程習慣會造成編程不能通過編譯[4]。例如:IF語句的下一行不向右縮進,在Python編程語言中,縮進規(guī)是至關重要的一部分,相對于其他語言來說,Python編程語言最突出的特點是模塊界限,這主要是每行的首字符位置來決定的,但是其他語言,例如C語言等,則是通過“{}”來對于模塊界限進行確定。
1.2語言優(yōu)點
Python編程語言的優(yōu)點比較多,使用Python編程語言簡單易學,Python編程語言可以免費使用,編程速度快,具有一定的可移植性和解釋性,具備一定的拓展性和可嵌入性[5]。Python編程語言是一種簡單的思想語言,具有良好閱讀基礎的Python編程員在對Python編程的閱讀中,就像是在閱讀英語一樣,可以幫助編程員把握關鍵問題、解決問題,而不是研究語言本身。因為Python編程語言具有一定的簡單性,清楚明了,容易理解,所以學習Python編程語言難度也相對低一些,在Python編程語言中,包含說明文檔,能夠幫助理解[6]。Python編程語言底層通過C語言編寫,很多標準款、第三方庫都是借助C語言進行編寫,所以運行速度比較快。此外,Python編程語言也是FLOSS的重要組成部分,應用這可以自由發(fā)布軟件拷貝,對相應源代碼進行閱讀和改動,且能夠將其應用到軟件中。開源本質讓Python編程語言可以被移植到更多的平臺中。Python編程語言是編譯性語言,能夠將源文件轉換到用戶計算機所使用的語言中。這一過程通過編譯器和不同標記、選項等共同完成。在對程度進行運行中,連接軟件對用戶程序復制和內(nèi)存運行都有一定幫助。借助Python編程語言編寫的程序不需要進行二進制編譯就可以在源代碼中進行相應程序的運行。計算機內(nèi)部,Python編程語言解釋器可以將源代碼進行轉換,使其成為字節(jié)碼中間形式,再將其翻譯成計算機語言運行,能夠讓Python編程語言應用變得更加簡單,程序移植也更加簡單。Python編程語言支持面向過程編輯,也能夠支持面向對象編程,在向過程中語言中,程序通過過程或使用重用代碼函數(shù)構建。在面向對象語言中,Python編程語言包含功能和數(shù)據(jù)組合對象。Python編程語言的可拓展性能夠讓語言嵌入其他語言中,可以提供必要的基本功能。
2基于Python的混合語言編程
2.1混合語言編程軟件結構框架
Python編程語言應用到混合語言編程中,一種是進行拓展,另一種是通過嵌入來實現(xiàn)。其中,拓展是通過從C語言實現(xiàn)對Python的拓展,需要從相應編程語言中進行對應模塊功能的調(diào)取和應用。而嵌入的實現(xiàn)主要是通過Python解釋器來實現(xiàn)的,通過Python解釋器在相應程序中應用來實現(xiàn),這樣相應的應用程序可以解釋Python的腳本程序,確保編程目標的實現(xiàn)。
2.2典型程序結構
在C語言源程序中,Python拓展模塊具備一定的代表性,例如:Python.h頭文件,文件在Python的所有內(nèi)部數(shù)據(jù)結構以及函數(shù)原型都可以進行定義;但是同時也需要定義一個例外對象,這一個對象主要是針對例外對象來說的。這一模塊主要是對函數(shù)的實現(xiàn)方式進行定義,通過函數(shù)來將參數(shù)表示的Python對象進行轉換,使其如何C語言程序的格式要求,在處理好格式后,轉換成Python對象,最后傳回Python解釋器。如果這一過程中出現(xiàn)異常問題,則可以借助已經(jīng)設定的例外對象實現(xiàn)返回。在源程序中,需要對拓展模塊定義的函數(shù)名以及函數(shù)實現(xiàn)對應關系列表,以此來實現(xiàn)相應拓展模塊的函數(shù)初始化操作。除了一般的手工代碼編寫途徑,還能選擇通過自動化工作來實現(xiàn),可以借助SWIG,通過對現(xiàn)有的代碼進行掃描,自動生成需要的代碼,這樣做也可以在一定程度上促進遺留代碼轉化效率提升?,F(xiàn)階段,SWIG在很多大型科學計算項目開發(fā)中都有很好的應用效果。相對于一般模塊化的拓展來說,Python中嵌入應用程序,可以結合具體的嵌入目的差異來實現(xiàn),為用戶提供多種選擇,這些嵌入還會對應用程序專用拓展產(chǎn)生影響,所以,嵌入的實現(xiàn)相對更為繁瑣,其主要原理則是通過Python提供的CAPI來實現(xiàn)數(shù)據(jù)格式轉化,借助例外處理的方式來實現(xiàn)程序設計目標。
2.3Python與C/C++實現(xiàn)混合編程的程序設計要點
Python自身存在一定的不足,Ctypes是一個為Python準備的外部函數(shù)庫,其提供兼容C的數(shù)據(jù)類型,并允許調(diào)用DLL或共享庫中的函數(shù)。同時,通過它可以使用純粹的Python包裝這些函數(shù)庫。下面就分享一部分Python與C/C++實現(xiàn)混合編程的程序設計。在vs2017新建一個空文件testpy3,新建文件test.c和math_test.py//test.c#include<Python.h>intmain(intargc,char*argv[]){//設定參數(shù)值inta=3;intb=6;//初始化Py_SetProgramName(argv[0]);Py_Initialize();//測試python3的打印語句PyRun_SimpleString("print('HelloPython!')\n");//執(zhí)行import語句,把當前路徑加入路徑中,為了找到math_test.pyPyRun_SimpleString("importos,sys");PyRun_SimpleString("sys.path.append('./')");//測試打印當前路徑PyRun_SimpleString("print(os.getcwd())");PyObject*pModule;PyObject*pFunction;PyObject*pArgs;PyObject*pRetValue;//importmath_testpModule=PyImport_ImportModule("math_test");if(!pModule){printf("importpythonfailed!!\n");return-1;}//對應math_test.py中的defadd_func(a,b)函數(shù)pFunction=PyObject_GetAttrString(pModule,"add_func");if(!pFunction){printf("getpythonfunctionfailed!!!\n");return-1;}if(!pModule){printf("importpythonfailed!!\n");return-1;}Py_Finalize();//方便查看while(1);return0;}通過Python與C/C++實現(xiàn)混合編程,用C或C++改寫關鍵部分,可以提高運行速度。
3結語
就Python語言來看,其實面向對象的,Python可以提供類類繼承、類的私有和公有屬性、例外處理等完善的對面向對象方式的支持。和Java類似,Python程序在執(zhí)行前,需要首先將其編譯成字節(jié)碼,借助虛擬機來制定。在Python內(nèi)部,還設置有對列表、關聯(lián)數(shù)組等數(shù)據(jù)結構,能夠為程序設計提供必要的高級數(shù)據(jù)結構支持。Python在語法上也比較簡單明了,學習操作都不難,且通過縮進來的程序塊層次結構,這樣可以防止使用塊符號,在編寫過程中,程序員必須要使用清晰統(tǒng)一的風格來寫程序,能夠促進程序可讀性提升,可以適當減少系統(tǒng)程序的維護開銷。此外,Python語言實際上只是為程序設計提供了一個編程語言需要的工鞥的最小內(nèi)核,還有很多其他的功能則需要拓展模塊來實現(xiàn)??紤]到在設計中就需要兼顧拓展性,所以可以比較方便的使用C或C++語言來進行拓展模塊相關功能的程序編寫,也可以將Python解釋器納入到其他程序編程中。綜合分析結果顯示,Python作為混合式語言編程開發(fā)而言,是具有很強適用性的。
作者:盧紹兵 單位:云南工商學院