本節書摘來自華章社群《python資料科學實踐指南》一書中的第0章,第0.3節為什麼是python,作者紀路,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視
0.3 為什麼是python
通過書名,各位讀者就應該知道這是一本講解python程式設計的書了。資料科學隻是個引子,我希望能通過相關的例子和練習激發出讀者的興趣,幫助讀者除掉程式設計這條攔路虎。在很多非計算機相關專業的人的概念裡,程式設計是要歸為玄學分類的,通過一堆意義不明的符号就能驅動計算機完成各種各樣的任務,是不是有點像魔法師口中所念的咒語。但事實上,計算機隻能做兩件事情,執行計算并記錄結果,隻不過它的這兩項能力遠遠超過人類大腦的能力(讀者可能看過一些文章,其中有些研究聲稱嘗試估算過人類大腦的計算能力,發現人腦的計算能力仍然比現今最先進的計算機還要快很多倍。但是人類大腦中有些子產品,比如視覺、語言,是人類經過億萬年的演化,大自然進行極緻優化所産生的結果。這裡對于計算和存儲能力的比較僅是指數學計算和文字存儲方面)。以我正在使用的筆記本來說,其擁有主頻為2.5ghz的雙核處理器,總計約等于50億次/秒的計算速度。而512gb的硬碟則可以存儲10萬本書(按每本書5mb計算,實際上5mb大小的書應該算是鴻篇巨著了。假如按utf-8編碼,每個中文占3~4個位元組(byte),而5mb約有500萬個位元組,這至少是一本百萬字的書)。如果想要使用計算機這種能力強大的工具,就需要掌握一門程式設計語言,用來和計算機進行溝通。雖然我也想為各位讀者科普一下衆多的程式設計語言,不過這畢竟是一本教授python程式設計的書,是以這裡隻通過以下幾個方面來闡述一下用python作為資料科學工具的理由。
(1)簡單易上手
python被譽為可執行的“僞代碼”,其文法風格接近人類的語言,即使是第一次看代碼的人也能很容易了解程式所要實作的功能,讀者可以試着閱讀下面這段代碼:
上面的代碼中range代表一段區間,0代表下界,10代表上界,通常python程式的上下界是左閉右開的一個區間。for的含義表示“這其中的每一個數”,print就不言自明了,代表列印結果到螢幕上。
除了優雅的文法之外,python還屬于解釋性語言,我們可以不經過編譯、連結等步驟直接獲得程式執行的結果。而且python還擁有互動式解釋器,可以讓我們随時随地測試我們的代碼,如圖0-1所示。

(2)資源豐富、應用廣泛
已經有很多書講解了python相關的技巧,比如《程式設計導論》是麻省理工學院(mit)計算機科學導論的課程;《python程式設計實戰》是一本python程式設計技巧進階的好書,介紹了在python中如何實踐設計模式;《機器學習實戰》主要講解了機器學習的常見算法,其中使用python編寫了全部的代碼;《python高手之路》對如何使用python建構大型系統提出了很多有益的見解。而且使用python的知名項目也很多,比如openstack開源雲計算平台就是由python編寫的,還有世界上最大的視訊網站youtube也是使用python開發的,等等。當然python在大資料應用上也有其獨特的優勢,科學計算庫numpy和scipy、繪圖子產品pylab、統計庫pandas、機器學習庫scikit-learn都是為python所設計的,現在流行的hadoop和spark也都提供了python接口。可以說在“大資料”“資料科學”領域,如果某一個産品不支援python,那麼其前景将會是難以想象的。
(3)跨平台、免費
python官方提供了多平台的解釋器,包括windows、mac os x、linux甚至更多的其他平台,你所寫的python代碼,可以在不經修改的情況下移植,比如在windows上開發,在linux伺服器上運作,不會有任何問題。而且python是免費且開源的,不僅标準庫可以随意閱讀其源碼,連官方解釋器的c語言實作也可以獲得其源碼。python社群是鼓勵分享的,讀者不僅可以從中學到很多程式設計的技巧,甚至還可以做出一些貢獻。