python可以開發什么軟件?
主要可以作為小程序,爬蟲程序,系統編程等等。
Python的應用領域分為以下幾類。下面是Python可以為我們做的一些具體的事情。但是,我們不會深入討論這些工具。如果您對這些主題感興趣,請從python培訓網站的老男孩或其他資源中獲取更多信息。
Python的內置操作系統服務接口可用于系統編程,使其成為編寫可移植管理工具和組件(有時稱為Shell工具)以維護操作系統的理想工具。
Python程序可以搜索文件和目錄樹,運行其他程序,使用進程或線程進行并行處理,等等。
可用于用戶圖形界面。
Python的簡單性和快速的開發周期非常適合開發GUI程序。此外,基于C平臺的工具包wxPythonGUIAPI可以使用Python構建可移植的GUI。
一些高級工具包如PythonCard和達波都是建立在wxPython和Tkinter的基礎API上的。有了合適的庫,你可以使用其他GUI工具包,比如Qt、GTK、MFC和Swing。
可用于互聯網腳本。
Python提供了一個標準的互聯網模塊,使Python能夠在服務器端和客戶端執行廣泛的網絡任務。
而且很多使用Python進行互聯網編程的第三方工具都可以在網絡上獲得。此外,Python還出現了許多Web開發工具包,如Django、TurboGears、Pylons、Zope和WebWare,這些工具包使Python能夠快速構建功能齊全的高質量網站。
可用于組件集成
當Python作為一種控制語言被引入時,它的組件集成角色就被涉及到了。Python可以通過C/C系統進行擴展,可以嵌套C/C系統的特性,從而可以作為一種靈活的膠水語言來腳本化其他系統和組件的行為。
比如將一個C庫集成到Python中,可以利用Python來測試和調用庫中的其他組件;通過將Python嵌入到產品中,無需重新編譯整個產品或分發源代碼,就可以獨立定制產品。
可用于數據庫編程。
對于傳統的數據庫需求,Python提供了所有主流關系數據庫系統的接口,Python定義了可移植的數據庫API,通過Python腳本訪問SQL數據庫系統。這個API對于各種底層應用的數據庫系統是統一的。
因此,為自由軟件MySQL系統編寫的腳本可以在其他系統(例如Oracle)上工作——在很大程度上無需更改——您只需替換底層供應商接口即可實現。
可用于快速原型制作
對于Python程序來說,用Python或C編寫的組件看起來都一樣。正因為如此,我們可以先用Python做系統原型,然后把組件移植到C或者類似C的編譯語言上。
可用于數值計算和科學計算編程。
前面提到的NumPy數值編程的擴展包括了很多高級工具。通過將Python與用編譯語言編寫的數值計算的常規代碼集成以提高速度,其他數值計算工具為Python提供了對動畫、3D可視化、并行處理等功能的支持。
可以用在游戲、圖像、人工智能、XML、機器人等等。
Python有很多應用,遠不止這里說的這些。
比如pygam:/?pa?θ?美式發音:/?·帕?θɑ?N/)是一種面向對象的解釋性計算機編程語言,由荷蘭人吉多·范·羅蘇姆于1989年發明,并于1991年首次公開發布。
Python是純自由軟件,源代碼和解釋器CPython遵循GPL(GNU通用公共許可證)許可。Python語法簡潔明了,它的一個特點就是強制使用空格作為語句縮進。
Python擁有豐富而強大的庫。常被戲稱為gluelanguage,可以輕松連接其他語言制作的各種模塊(尤其是C/C)。一個常見的應用情況是,用Python快速生成程序的原型(有時甚至是程序的最終接口),然后用更合適的語言重寫有特殊要求的部分,比如3D游戲中的圖形渲染模塊,對性能要求特別高,可以用C/C重寫,然后打包成Python可以調用的擴展類庫。需要注意的是,使用擴展類庫時可能需要考慮平臺問題,有些可能不需要。提供跨平臺實現。
7月20日,I:Python排名第一。
2018年3月,該語言的作者在郵件列表上宣布,Python2.7將于2020年1月1日結束支持。如果用戶希望在這個日期之后繼續獲得Python2.7相關的支持,他們需要向商業提供商付費。
Python如何嵌入C/C進行開發?
如果想用Python包裝現有的C或C函數,有很多選擇。一個相對簡單的事情是,我們可以嘗試手工封裝如何在Python中嵌入C/C進行開發。
手動打包如果您需要打包的C/C代碼相對較少,您可以手動打包。"擴展和嵌入"部分是一個很好的參考。
當我為C和C代碼編寫包裝器時,我通常會為代碼提供一個過程化的接口,然后使用Python構造一個面向對象的接口。我這樣做有兩個原因:第一,向Python公開C對象很麻煩;其次,我更喜歡用Python寫高層結構,而不是用c。
讓讓我們看一個基本的包裝器:有一個函數"你好"在文件"hello.c"。的定義你好"如下所示:
Char*hello(char*what)要手動打包,我們需要做以下工作。
首先,編寫一個接受字符串并返回字符串的Python可調用函數。
其次,在模塊的符號表中注冊這個函數(所有Python函數都存在于模塊中,即使實際上是C函數!)
第三,為模塊寫一個初始化函數(所有的擴展模塊都需要一個初始化函數)。
第四,寫劇本:
即使在這個簡單的層次上,這段代碼也有兩個方面值得討論。
注意錯誤處理的PyArg_ParseTuple調用。這個調用告訴Python"你好"包裝函數只接受一個參數,即字符串("標準普爾代表"弦與弦"ss"方法與技巧兩根弦""si"代表"字符串和整數).CAPI和Python之間的約定是,從返回PyObject*的函數返回NULL表示發生了錯誤;在這種情況下,錯誤消息設置在PyArg_ParseTuple中,我們只需通過返回NULL在堆棧上傳遞錯誤。
引用計數Python工作于引用計數系統:每當一個函數"擁有"一個對象(例如,通過將其分配給一個列表或字典),它使用Py_INCREF將該對象的引用計數增加1。當從特定位置刪除對象時(例如,從列表或單詞中)字典中刪除),引用計數將通過使用Py_DECREF減少。當引用計數達到0時,Python知道該對象沒有被任何對象使用,可以釋放它(但是,可能不會立即釋放)。
為什么這么重要?我們在這段代碼中使用PyString_FromString創建了一個PyObject。我們需要增量嗎?要找到答案,請查看PyString_FromString的文檔:
#l2h-461哪里寫著"新參考"?這意味著它將移交一個引用計數為1的對象,這正是我們想要的。如果它說"借來的參考",那么我們需要在返回之前對對象執行一次INCREF,以表明我們要分配的內存在函數結束后可以繼續存在。
這是考慮推薦人的一種
如果您從PythonAPI接收到一個Python對象,您可以在自己的C代碼中使用它,而無需添加其引用。
如果你想確保Python對象能在你自己的C代碼末尾存活,你必須INCREF。
如果你從Python代碼中收到一個對象,并且它是一個新的引用,但是你沒有。;如果你不想讓它在你自己的C代碼的末尾繼續存在,你應該解除它。
對了,如果想返回None,可以用Py_None。記得增量!
另一個注意:我談到了使用PyCObjects來傳遞不透明的C/C數據類型。如果您使用Python來組織代碼,這是很有用的,但是它有一個復雜的結構,不需要訪問Python。
您可以將指針包裝在PyCObjects中(如果需要,您可以使用關聯的析構函數),在這種情況下,它們將成為不透明的Python對象,并且它們的內存由Python解釋器管理。
。在示例代碼中可以看到一個例子,包括code/hell/hellmodule.C,函數cobj_in,cobj_out和free_my_struct,使用PyCObject包裝的分配C結構返回Python。
摘要
所以,這是關于如何手動打包Python的簡單介紹。然而,正如您可能猜到的,有許多項目致力于自動封裝代碼。所以手工打包嘗試使用Python嵌入C/C進行開發。其他的可以搜索看看,其中SWIG,pyrex,ctypes比較好用。