使用 Python 可以做什麼?
翻譯自 《Python學習手冊(第5版)》
Systems Programming
Python 對作業系統服務的內建介面使其非常適合編寫可移植、可維護的系統管理工具和實用程式 utilities (有時稱為 shell 工具)。Python 程式可以搜尋檔案和目錄樹、啟動其他程式、使用程序和執行緒進行並行處理等等。
Python 的標準庫帶有 POSIX 繫結和對所有常用 OS 工具的支援: 環境變數、檔案、套接字、管道、程序、多執行緒、正則表示式模式匹配、命令列引數、標準流介面、shell 命令發射器、檔名擴充套件、zip 檔案實用程式、XML 和 JSON 分析器、CSV 檔案處理程式等。此外, Python 的大部分系統介面設計為可移植; 例如, 複製目錄樹的指令碼通常在所有主要 Python 平臺上執行不變。EVE Online 採用 Stackless Python 的實現並提供了針對多處理需求的高階解決方案。
GUIs (使用者圖形介面)
Python 的簡潔和快速週轉也使它成為桌面上圖形使用者介面程式設計的好匹配。python 附帶了一個標準面向物件的介面, 該 API 稱為 tkinter (tkinter 2.X), 它允許 Python 程式實現具有本地外觀和感覺的行動式 gui。Python/tkinter gui 在 Windows、X Windows ( Unix 和 Linux ) 和 Mac os (經典版和 OS x) 上執行不變。一個免費的擴充套件包, PMW, 新增高階小部件到 tkinter 工具包。此外, 基於 c++ 庫的 wxPython GUI API 提供了一種在 Python 中構建行動式 gui 的替代工具包。
更高級別的工具包 (如達博) 建立在基本 api (如 wxPython 和 tkinter) 之上。使用適當的庫, 您還可以在 Python 中的其他工具包中使用 GUI 支援, 例如 Qt 與 PyQt、具有 PyGTK 的 GTK、帶有 PyWin32 的 MFC、. NET 和 IronPython, 以及使用 Jython (2 章中描述的 Java 版本的 Python) 或 JPype 進行擺動。對於在 web 瀏覽器中執行或具有簡單介面要求的應用程式, Jython 和 Python web 框架和伺服器端 CGI 指令碼提供其他使用者介面選項。
Internet Scripting
python 附帶了標準的 Internet 模組, 允許 python 程式在客戶端和伺服器模式下執行各種網路任務。指令碼可以通過套接字進行通訊;提取傳送到伺服器端 CGI 指令碼的表單資訊;通過 FTP 傳輸檔案;分析和生成 XML 和 JSON 文件;傳送、接收、撰寫和分析郵件; 按 URL 獲取網頁;解析獲取的網頁的 HTML;通過 XML (RPC、SOAP 和 Telnet) 進行通訊等等。Python 的庫使這些任務非常簡單。
不僅如此, Web 上還提供了大量的第三方工具, 用於 Python 中的 Internet 程式設計。例如, HTMLGen 系統生成基於 Python 類的描述的 HTML 檔案,mod_python 包在 Apache web 伺服器中高效執行 Python, 並支援伺服器端模板化及其 Python 伺服器頁面, 以及 Jython 系統提供無縫 Python/Java 整合, 並支援在客戶端上執行的伺服器端小程式的編碼。
此外, 對於 python, 如 Django、TurboGears、web2py、塔架、Zope 和 WebWare, 完整的 web 開發框架包支援使用 python 快速構建全功能和生產質量的網站。其中許多功能包括物件關係對映器、模型/檢視/控制器體系結構、伺服器端指令碼和模板以及 AJAX 支援, 以提供完整的企業級 web 開發解決方案。
最近, Python 已擴充套件到豐富的 Internet 應用程式 (RIAs), 其中包括 IronPython 中的 Silverlight 和 pyjs (也稱為睡衣 ( pyjamas)) 及其 Python 到 JavaScript 編譯器、AJAX 框架和小部件集。Python 還已遷移到雲端計算、應用引擎以及前面的資料庫部分中描述的其他內容。在 Web 潛在客戶的位置, Python 很快就會跟隨。
Component Integration (元件整合)
Python 在 c 和 c++ 系統中擴充套件和嵌入的能力使其成為一種靈活的膠水語言, 用於編寫其他系統和元件的行為指令碼。例如, 將 C 庫整合到 python 使 python 能夠測試和啟動庫的元件, 並在產品中嵌入 Python, 無需重新編譯整個產品 (或根本不發運其原始碼) 即可對現場自定義進行編碼。
諸如 SWIG 和 SIP 程式碼生成器之類的工具可以自動完成將編譯的元件連結到 python 以便在指令碼中使用所需的大部分工作, 而 Cython 系統允許程式設計師混合 python 和類似 C 的程式碼。更大的框架, 如 Python 在 Windows 上的 COM 支援、基於 Jython Java 的實現和 IronPython。基於 .NET 的實現提供了指令碼元件的其他方法。例如, 在 Windows 上, Python 指令碼可以使用框架來編寫 Word 和 Excel 的指令碼、訪問 Silverlight 等。
Database Programming
對於傳統的資料庫需求, 對於所有常用的關係資料庫系統 (Sybase、Oracle、Informix、ODBC、SQL/">MySQL、PostgreSQL、SQLite 等) 都有 Python 介面。python 世界還定義了一個可移植資料庫 API, 用於從 Python 指令碼訪問 SQL 資料庫系統, 在各種基礎資料庫系統上看起來相同。例如, 由於供應商介面實現了行動式 API, 編寫用於與免費 MySQL 系統一起工作的指令碼在其他系統 (如 Oracle) 上的工作基本不變;您通常需要做的就是更換基礎供應商介面。自2.5 以來, 程序內 SQLite 嵌入式 SQL 資料庫引擎是 Python 本身的標準部分, 支援原型設計和基本程式儲存需求。
在非 SQL 部分中, Python 的標準pickle
模組提供了一個簡單的物件持久化系統-它允許程式輕鬆地將整個 Python 物件儲存和還原到檔案和類似檔案的物件。在 Web 上, 您還可以找到名為 ZODB 和 Durus 的第三方開源系統, 為 Python 指令碼提供完整的面向物件的資料庫系統;其他, 如 SQLObject 和 SQLAlchemy, 實現物件關係對映器 (ORMs), 將 Python 的類模型移植到關係表上;PyMongo 是 MongoDB 的一個介面, 它是一種高效能、非 SQL、開放原始碼的 JSON 樣式文件資料庫, 它將資料儲存在結構非常類似於 python 自己的列表和字典中, 其文字可以使用 python 自己的標準庫 json 模組進行分析和建立。
此外, 其他系統還提供了更專業的方法來儲存資料, 包括在 Google App 引擎中使用資料儲存, 通過 Python 類來建模和提供廣泛的可擴充套件性, 以及其他新興雲端儲存選項, 如 Azure、PiCloud、OpenStack 和 Stackato。
Rapid Prototyping (快速原型)
對於 python 程式, 用 python 和 C 編寫的元件看起來是一樣的。因此, 最初可以在 Python 中原型系統, 然後將所選元件移動到編譯語言 (如 c 或 c++) 以進行傳遞。與某些原型工具不同, Python 在原型凝固後不需要完全重寫。不需要 C + + 等語言效率的系統部分可以保持在 Python 中編碼, 便於維護和使用。
Numeric and Scientific Programming
python 在數字程式設計中也被大量使用, 這是一種傳統上不被認為是指令碼語言範圍的領域, 但已經發展成為 python 最引人注目的用例之一。這裡突出的是, 前面提到的 Python 的 NumPy 高效能數字程式設計擴充套件包括諸如陣列物件的高階工具、標準數學庫的介面等等。通過將 python 與以編譯語言編碼的數字例程整合為速度, NumPy 將 python 轉換為複雜而易於使用的數字程式設計工具, 通常可以替換傳統編譯語言 (如 FORTRAN 或 C++) 編寫的現有程式碼。
Python 支援動畫、3D 視覺化、並行處理等其他數字工具。例如, 流行的 SciPy 和 ScientificPython 擴充套件提供了更多的科學程式設計工具庫, 並將 NumPy 作為核心元件使用。Python 的 PyPy 實現也在數字領域中得到了牽引, 部分原因是此域中常見的排序的大量演算法程式碼可以在 PyPy 中快速執行, 通常速度快10X 到 100X。
Gaming, Images, Data Mining, Robots, Excel 等
Python 通常應用在更多的域中, 而不是可以在這裡覆蓋。例如, 您將找到允許您使用 Python 執行以下操作的工具:
- 遊戲程式設計和多媒體:pygame, cgkit, pyglet, PySoy, Panda3D, ...
- 通過 PySerial 擴充套件, 在 Windows、Linux 和更多埠上進行串列埠通訊
- 使用 PyRo 工具包進行機器人控制程式設計
- 使用 NLTK 包進行自然語言分析
- 樹莓派 (Raspberry Pi) 和 Arduino 板上的儀器儀表工具
- 移動 (Mobile) 計算: Python 埠到谷歌 Android 和蘋果 iOS 平臺
- Excel 電子表格功能和巨集程式設計: PyXLL 或 DataNitro 載入項
- 媒體檔案內容和元資料標籤處理 (Media file content and metadata tag processing): PyMedia, ID3, PIL/Pillow 等
- 人工智慧: PyBrain 神經網路庫和 Milk 機器學習工具包
- 專家系統: PyCLIPS, Pyke, Pyrolog, pyDatalog
- 網路監視 (Network monitoring): zenoss, 使用 Python 進行編寫和自定義
- Python 指令碼設計和建模: PythonCAD、PythonOCC、FreeCAD 和其他
- 檔案處理和生成 (Document processing and generation): ReportLab, Sphinx, Cheetah, PyPDF 等等
- 使用 Mayavi、matplotlib、VTK、VPython 等進行資料視覺化
- xml 分析: xml 庫包、xmlrpclib 模組和第三方擴充套件
-
JSON, CSV 檔案處理:
json
andcsv
modules - 資料探勘: 使用 Orange 框架、Pattern bundle、Scrapy 和自定義程式碼