翻譯自 《Python學習手冊(第5版)》
Python 對作業系統服務的内置接口使其非常适合編寫可移植、可維護的系統管理工具和實用程式 utilities (有時稱為 shell 工具)。Python 程式可以搜尋檔案和目錄樹、啟動其他程式、使用程序和線程進行并行處理等等。
Python 的标準庫帶有 POSIX 綁定和對所有常用 OS 工具的支援: 環境變量、檔案、套接字、管道、程序、多線程、正規表達式模式比對、指令行參數、标準流接口、shell 指令發射器、檔案名擴充、zip 檔案實用程式、XML 和 JSON 分析器、CSV 檔案處理程式等。此外, Python 的大部分系統接口設計為可移植; 例如, 複制目錄樹的腳本通常在所有主要 Python 平台上運作不變。EVE Online 采用 Stackless Python 的實作并提供了針對多處理需求的進階解決方案。
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 腳本提供其他使用者界面選項。
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, Pylons, Zope 和 WebWare, 完整的 web 開發架構包支援使用 python 快速建構全功能和生産品質的網站。其中許多功能包括對象關系映射器、模型/視圖/控制器體系結構、伺服器端腳本和模闆以及 AJAX 支援, 以提供完整的企業級 web 開發解決方案。
最近, Python 已擴充到豐富的 Internet 應用程式 (RIAs), 其中包括 IronPython 中的 Silverlight 和 pyjs (也稱為睡衣 ( pyjamas)) 及其 Python 到 JavaScript 編譯器、AJAX 架構和小部件集。Python 還已遷移到雲計算、應用引擎以及前面的資料庫部分中描述的其他内容。在 Web 潛在客戶的位置, Python 很快就會跟随。
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 等。
對于傳統的資料庫需求, 對于所有常用的關系資料庫系統 (Sybase、Oracle、Informix、ODBC、MySQL、PostgreSQL、SQLite 等) 都有 Python 接口。python 世界還定義了一個可移植資料庫 API, 用于從 Python 腳本通路 SQL 資料庫系統, 在各種基礎資料庫系統上看起來相同。例如, 由于供應商接口實作了便攜式 API, 編寫用于與免費 MySQL 系統一起工作的腳本在其他系統 (如 Oracle) 上的工作基本不變;您通常需要做的就是更換基礎供應商界面。自2.5 以來, 程序内 SQLite 嵌入式 SQL 資料庫引擎是 Python 本身的标準部分, 支援原型設計和基本程式存儲需求。
在非 SQL 部分中, Python 的标準 <code>pickle</code> 子產品提供了一個簡單的對象持久化系統-它允許程式輕松地将整個 Python 對象儲存和還原到檔案和類似檔案的對象。在 Web 上, 您還可以找到名為 ZODB 和 Durus 的第三方開源系統, 為 Python 腳本提供完整的面向對象的資料庫系統;其他, 如 SQLObject 和 SQLAlchemy, 實作對象關系映射器 (ORMs), 将 Python 的類模型移植到關系表上;PyMongo 是 MongoDB 的一個接口, 它是一種高性能、非 SQL、開放源碼的 JSON 樣式文檔資料庫, 它将資料存儲在結構非常類似于 python 自己的清單和字典中, 其文本可以使用 python 自己的标準庫 json 子產品進行分析和建立。
此外, 其他系統還提供了更專業的方法來存儲資料, 包括在 Google App 引擎中使用資料存儲, 通過 Python 類來模組化和提供廣泛的可擴充性, 以及其他新興雲存儲選項, 如 Azure、PiCloud、OpenStack 和 Stackato。
對于 python 程式, 用 python 和 C 編寫的元件看起來是一樣的。是以, 最初可以在 Python 中原型系統, 然後将所選元件移動到編譯語言 (如 c 或 c++) 以進行傳遞。與某些原型工具不同, Python 在原型凝固後不需要完全重寫。不需要 C + + 等語言效率的系統部分可以保持在 Python 中編碼, 便于維護和使用。
python 在數字程式設計中也被大量使用, 這是一種傳統上不被認為是腳本語言範圍的領域, 但已經發展成為 python 最引人注目的用例之一。這裡突出的是, 前面提到的 Python 的 NumPy 高性能數字程式設計擴充包括諸如數組對象的進階工具、标準數學庫的接口等等。通過将 python 與以編譯語言編碼的數字例程內建為速度, NumPy 将 python 轉換為複雜而易于使用的數字程式設計工具, 通常可以替換傳統編譯語言 (如 FORTRAN 或 C++) 編寫的現有代碼。
Python 支援動畫、3D 可視化、并行處理等其他數字工具。例如, 流行的 SciPy 和 ScientificPython 擴充提供了更多的科學程式設計工具庫, 并将 NumPy 作為核心元件使用。Python 的 PyPy 實作也在數字領域中得到了牽引, 部分原因是此域中常見的排序的大量算法代碼可以在 PyPy 中快速運作, 通常速度快10X 到 100X。
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 檔案處理: <code>json</code> and <code>csv</code> modules
資料挖掘: 使用 Orange 架構、Pattern bundle、Scrapy 和自定義代碼
Scikit-learn 是基于 Scipy 為機器學習建造的的一個 Python 子產品,他的特色就是多樣化的分類,回歸和聚類的算法包括支援向量機,邏輯回歸,樸素貝葉斯分類器,随機森林,Gradient Boosting,聚類算法和 DBSCAN。而且也設計出了 Python numerical 和 scientific libraries Numpy and Scipy
Keras 是基于 Theano, Tensorflow, CNTK 的一個深度學習架構,它的設計參考了 Torch,用 Python 語言編寫,是一個高度子產品化的神經網絡庫,支援 GPU 和 CPU。
不隻是一個美味的意大利菜,也是一個和 Keras 有着相似功能的深度學習庫,但其在設計上與它們有些不同。
Pylearn 是一個讓機器學習研究簡單化的基于 Theano 的庫程式。它把深度學習和人工智能研究許多常用的模型以及訓練算法封裝成一個單一的實驗包,如随機梯度下降。
NuPIC 是一個以 HTM 學習算法為工具的機器智能平台。HTM 是皮層的精确計算方法。HTM 的核心是基于時間的持續學習算法和儲存和撤銷的時空模式。NuPIC 适合于各種各樣的問題,尤其是檢測異常和預測的流資料來源。
Nilearn 是一個能夠快速統計學習神經影像資料的 Python 子產品。它利用 Python 語言中的 scikit-learn 工具箱和一些進行預測模組化,分類,解碼,連通性分析的應用程式來進行多元的統計。
Pybrain 是基于 Python 語言強化學習,人工智能,神經網絡庫的簡稱。 它的目标是提供靈活、容易使用并且強大的機器學習算法和進行各種各樣的預定義的環境中測試來比較你的算法。
Pattern 是 Python 語言下的一個網絡挖掘子產品。它為資料挖掘,自然語言處理,網絡分析和機器學習提供工具。它支援向量空間模型、聚類、支援向量機和感覺機并且用KNN分類法進行分類。
Fuel 為你的機器學習模型提供資料。他有一個共享如MNIST, CIFAR-10 (圖檔資料集), Google's One Billion Words (文字)這類資料集的接口。你使用他來通過很多種的方式來替代自己的資料。
Bob 是一個免費的信号處理和機器學習的工具。它的工具箱是用 Python 和 C++ 語言共同編寫的,它的設計目的是變得更加高效并且減少開發時間,它是由處理圖像工具,音頻和視訊處理、機器學習和模式識别的大量軟體包構成的。
Skdata 是機器學習和統計的資料集的庫程式。這個子產品對于玩具問題,流行的計算機視覺和自然語言的資料集提供标準的Python語言的使用。
MILK 是Python語言下的機器學習工具包。它主要是在很多可得到的分類比如SVMS,K-NN,随機森林,決策樹中使用監督分類法。 它還執行特征選擇。 這些分類器在許多方面相結合,可以形成不同的例如無監督學習、密切關系金傳播和由MILK支援的K-means聚類等分類系統。
IEPY 是一個專注于關系抽取的開源性資訊抽取工具。它主要針對的是需要對大型資料集進行資訊提取的使用者和想要嘗試新的算法的科學家。
Quepy 是通過改變自然語言問題進而在資料庫查詢語言中進行查詢的一個 Python 架構。他可以簡單的被定義為在自然語言和資料庫查詢中不同類型的問題。是以,你不用編碼就可以建立你自己的一個用自然語言進入你的資料庫的系統。
現在 Quepy 提供對于 Sparql 和 MQL 查詢語言的支援。并且計劃将它延伸到其他的資料庫查詢語言。
Hebel 是在 Python 語言中對于神經網絡的深度學習的一個庫程式,它使用的是通過 PyCUDA 來進行 GPU 和 CUDA 的加速。它是最重要的神經網絡模型的類型的工具而且能提供一些不同的活動函數的激活功能,例如動力,涅斯捷羅夫動力,信号丢失和停止法。
mlxtend 它是一個由有用的工具和日常資料科學任務的擴充組成的一個庫程式。
nolearn 容納了大量能對你完成機器學習任務有幫助的實用程式子產品。其中大量的子產品和 scikit-learn 一起工作,其它的通常更有用。
Ramp 是一個在 Python 語言下制定機器學習中加快原型設計的解決方案的庫程式。他是一個輕型的 pandas-based 機器學習中可插入的架構,它現存的Python語言下的機器學習和統計工具(比如scikit-learn,rpy2 等)Ramp 提供了一個簡單的聲明性文法探索功能進而能夠快速有效地實施算法和轉換。
Feature Forge一系列工具通過與 scikit-learn 相容的 API,來建立和測試機器學習功能。
這個庫程式提供了一組工具,它會讓你在許多機器學習程式使用中很受用。當你使用 scikit-learn 這個工具時,你會感覺到受到了很大的幫助。(雖然這隻能在你有不同的算法時起作用。)
REP 是以一種和諧、可再生的方式為指揮資料移動驅動所提供的一種環境。
它有一個統一的分類器包裝來提供各種各樣的操作,例如 TMVA, Sklearn, XGBoost, uBoost等等。并且它可以在一個群體以平行的方式訓練分類器。同時它也提供了一個互動式的情節。
machine-learning-sample 用亞馬遜的機器學習建造的簡單軟體收集。
Python-ELM 這是一個在 Python 語言下基于 scikit-learn 的極端學習機器的實作。
主題模型 python實作
Scalable statistical semantics
Analyze plain-text documents for semantic structure
Retrieve semantically similar document
探尋有趣之事!