官术网_书友最值得收藏!

1.3 為何使用Python

Python的表達能力極強,還易于學習,新手很快就會發現,他們能夠在很短的時間內完成很多任務。很多Python庫都封裝了使用其他語言編寫的工具,讓你能夠輕松地調用其他系統。例如,機器學習系統scikit-learn包含LIBLINEAR和LIBSVM(它們都是使用C語言編寫的),而numpy包含BLAS以及其他C和Fortran語言庫。因此,如果Python代碼能正確地利用這些模塊,其速度將可與C代碼媲美。

Python被認為是“開箱即用”的,因為它內置了很多重要的工具和穩定的庫。

unicode和bytes:身處Python語言的核心。

array:基本類型數組,內存使用效率高。

math:基本數學運算,包括一些簡單的統計計算。

sqlite3:封裝了基于文件的流行SQL引擎SQLite3。

collections:各種對象,包括雙向隊列、計數器和字典的變種。

asyncio:使用async和await語法為I/O密集型任務提供并發支持。

除上述語言核心庫外,還有大量的外部庫。

numpy:一個Python數值運算庫,是各種矩陣運算的基石。

scipy:包含眾多值得信賴的科學庫,這些科學庫通常封裝了備受尊崇的C和Fortran語言庫。

pandas:一個數據分析庫,建立在scipy和numpy的基礎之上,類似于R數據框架(data frame)和Excel電子表格。

scikit-learn:正快速成為默認的機器學習庫,建立在scipy的基礎之上。

tornado:讓你能夠輕松地實現并發的庫。

PyTorch和TensorFlow:分別來自Facebook和Google的深度學習框架,提供了強大的Python和GPU支持。

NLTK、SpaCy和Gensim:提供了強大Python支持的自然語言處理庫。

數據庫綁定(database binding):用于同各種數據庫通信,包括Redis、MongoDB、HDF5和SQL。

Web開發框架:用于創建網站的高性能系統,如aiohttp、django、pyramid、flask和tornado。

OpenCV:提供計算機視覺的綁定。

API綁定:讓你能夠輕松地使用流行的Web API,如Google、Twitter和LinkedIn。

還有大量受控環境和shell,可滿足各種部署需求。

標準發行版。

pipenv、pyenv和virtualenv:用于搭建簡單、可移植的輕量級Python環境。

Docker:用于搭建可重現的簡單開發和生產環境。

Anaconda:專注于科學計算的環境。

Sage:一個類似于Matlab的環境,但包含集成開發環境(Integrated Development Environment,IDE)。

IPython:一個被科學家和開發人員廣泛使用的交互式Python shell。

Jupyter Notebook:一個基于瀏覽器的IPython擴展,被廣泛用于教學和演示。

Python的主要優點之一是,讓你能夠快速建立想法的原型。因為有眾多的支持庫,所以很容易檢查想法是否可行,即便你的實現相當粗糙。

要提高數學函數的速度,可考慮使用numpy;要嘗試機器學習,可考慮使用scikit-learn;而要清理和操作數據,pandas是不錯的選擇。

那么問題來了:長期看,為讓系統運行得更快,會不會導致團隊的開發速度降低呢?只要投入足夠的精力,總是可以進一步提高系統的性能,但這可能導致所做的優化脆弱而難以理解,最終給團隊帶來障礙。

一個這樣的例子是使用Cython(請參見7.6節)。Cython是一種基于編譯器的方法,它通過添加C類型聲明來修改Python代碼,以便能夠使用C語言編譯器進行編譯。這雖然可極大地提高速度(通常只需做少量工作就可讓速度與C語言代碼媲美),但為支持這些代碼而付出的代價將增加。具體地說,支持新模塊的工作可能更難,因為為繞開Python虛擬機以提升性能,可能需要做些折中,而要搞明白這些折中,團隊成員必須有更高的編程技能。

主站蜘蛛池模板: 武汉市| 区。| 阳春市| 合川市| 肇源县| 天全县| 志丹县| 和龙市| 田东县| 台山市| 九龙坡区| 蒙自县| 荃湾区| 黄陵县| 广元市| 南郑县| 开江县| 潜江市| 蓬溪县| 青阳县| 普陀区| 香河县| 宣汉县| 萝北县| 浦东新区| 灌南县| 财经| 华宁县| 南雄市| 金门县| 五家渠市| 南华县| 宜章县| 桐城市| 沙田区| 武清区| 威远县| 康保县| 青神县| 高尔夫| 长丰县|