本節書摘來自華章社群《python資料科學實踐指南》一書中的第1章,第1.1節python的版本之争,作者紀路,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視
1.1 python的版本之争
筆者非常希望這本書是你的第一本python書,這樣本書就不用去解釋為什麼python會有兩個不相容的版本了。但是,這個問題必須解釋清楚!因為這是一本入門類圖書,不僅應該講授當下必須了解的知識,還應當适當地回顧曆史、展望未來。python之父吉多·範羅蘇姆是在一個聖誕節的假期為了打發無聊時光而開發的python早期版本,不過當時由于電腦性能太差,而python的設計又強調通過消耗電腦的時間來節約人力的時間,導緻python程式運作緩慢,是以在早期并沒有受到太多關注。2001年python才釋出了2.0版本,實際上在2.4版本釋出的2004年之後python的使用才開始快速增長。python 2.5版本在以前是一個非常流行的版本,以至于這個版本被維護了很多年,至今仍然能夠看到很多以這個版本撰寫的圖書。在這個時期電腦的性能得到飛速提升,程式員們也慢慢地接受了這種花費計算機的一些時間來節約自己的時間的理念。在python 2.x釋出了9年之後的2009年,python 3.x釋出了,為了解決2.x版本中的一些早期設計缺陷,以及包括字元串編碼等python老大難問題。不過這似乎也帶來了更多的問題,在經過了3個版本的補救之後,3.4版對python3.x進行了大刀闊斧的修改,以至于在3.x的版本中3.4之前和之後的版本也并不相容。好在當時遷移到3.x的項目并不多,不過這也确實給人以python 3.x不靠譜的印象,是以也為以後3.x版本的推廣增加了一些難度。當然坊間流傳的另外一個原因是“python 3.x比python 2.x慢”,我不得不承認這是個事實,但python本來也不是以快為目的而設計的,是以真的不必在意這一點。
目前,常用的python有兩個版本,python 2.x和python 3.x(通常指3.4以後的版本,3.0-3.3版本官方已經不推薦使用了),兩個版本在很多方面都不相容,甚至簡單的“列印”輸出都不相容,是以基本上沒辦法無痛地将寫好的python程式在兩個不同版本的解釋器上運作。python 3.0于2009年年初釋出,python社群從版本2向版本3的跨越用了7年時間,但仍然說不上成功,大量有用的庫仍然不支援python 3。即使有這樣的問題,新版本的python仍有不少優點,比如它統一了python 2中比較混亂的部分,解決了編碼問題,增加了新式類,尤其在python 3.5這個版本中,還增加了異步關鍵字async、await等,這些改變使得python 3相比于python 2有着很大的優勢。然而在本書寫作之時,仍然有一些重要的庫不支援python 3,是以筆者推薦使用python 2.7進行本書的學習。不過為了着眼未來,本書會盡量使用python 3的風格來書寫程式,并且會在首次出現時注明,希望能夠幫助那些未來會使用python 3的讀者減少一些遷移的痛苦。