Python 這個程式語言的簡單歷史

更新於 2024/10/24閱讀時間約 5 分鐘
Python 之父 Guido van Rossum 與 Python 的版本分歧
Python 從創立之初的沒沒無名,至今被譽為「初學者最佳語言」,在 Python 社群背後默默貢獻的「鄉民」們居功厥偉!以致於不論網頁程式設計、手機程式設計、遊戲程式設計、自動控制程式…等各行各業,它都可以佔有一席之地。在此,我們就來說說 Python 的簡史,以及它赫赫有名的「版本分歧」事件。讓 Python 的初心者,也能跟老手侃侃而談 Python 當年的風花雪月。

黎明至茁壯:Python 1.0 ~ Python 2.6

Python 是在 1989 年 12 月,由一位荷蘭人 Guido van Rossum 製作。一直到 1991 年 2 月,他把 Python 0.9 版發佈在 alt.sources 這個新聞論壇,並開始廣為人知。接著於 1994 年 1 月,發表 Python 1.0 正式版,同年成立 comp.lang.python 專屬討論區,奠定了 Python 蓬勃發展的第一步。
2000 年 10 月,Python 進入 2.0 。除了新增一些語法,及加強記憶體管理功能外,語法與 Python 1.x 沒有太大差異。隨後為了因應各界對 Python 語言的殷殷期待,開發小組一直猛加新功能到 Python 語法裡。從 Python 2.1, 2.2, 2.3…一直到 2.6 ,Python 已經變得相當「臃腫」了。許多前後時間增添的語法,不僅重複,而且繁雜矛盾,令初學者望之卻步。如何把 Python 「減肥」,去蕪存菁,當時變成迫在眉睫的一等大事。

合久必分:Python 2.6 vs. Python 3.0

於是,在 2008 年 12 月,Python 開發小組投下一顆震撼彈:Python 3.0 釋出,而且語法與 Python 2.6 大大不相容!以前用 Python 2.6 寫的程式,若要在新的 Python 3.0 平台跑,幾乎要打掉重練。Python 開發小組在想不出更好的瘦身方法之下,忍痛廢掉 Python 2.x 架構重做。這也導致目前 2.x 與 3.x 出現所謂「Python 斷層」、程式碼無法互為引用的窘境。
也因此,老練的 Python 程式設計師,在拿到一段原始碼後,一定會問個問題:「這個程式是用 Python 2 寫的?還是 Python 3?」因為 Python 2 與 Python 3 的語法差異,已經大到不全面修改,無法互相使用的地步!如果您初學 Python,拿到一段原始碼,也建議您確認一下這段 Python 程式是用 2.x 還是 3.x 語法寫成的比較好。
在一些死守 Python 2.x 語法的程式師強烈要求下,開發小組釋出 Python 2.7。除了修正 2.6 的一些問題外,盡量不添加新功能,好讓使用 Python 2.6 撰寫的程式,能有個穩定的環境來執行。但在 2014 年 11 月,開發小組宣布「不會有 Python 2.8」,並且「將於 2020 年,終止 Python 2.x 這條路線的支援」。這無疑是敲響 Python 2.x 的喪鐘!所以 Python 2.7,可以說是 Python 2.x 的「安寧病房」,這個分支只剩下不到幾年的壽命了。
那初學者該學 Python 2 還是 Python 3 呢?如果您現在才要開始學 Python,請直接學習 Python 3.x。除非您被要求維護 Python 2.x 的舊程式碼,否則購買相關書籍時,請確認購買到的是討論 Python 3.x 語法的書。若您無法確定,就直接買其他本。Python 好書不少,不用冒險去買一本可能用不到的書籍。

Python 編年史

為了讓您瞭解 Python 簡單的歷史,以下條列附上各版本號碼,與釋出時間,供讀者參考:

Python 1.0(1994/01)

  • Python 1.5(1997/12/31)
  • Python 1.6(2000/09/05)

Python 2.0(2000/10/16)

  • Python 2.1(2001/04/17)
  • Python 2.2(2001/12/21)
  • Python 2.3(2003/07/29)
  • Python 2.4(2004/11/30)
  • Python 2.5(2006/09/19)
  • Python 2.6(2008/10/01)
  • Python 2.7(2010/07/03)

Python 3.0(2008/12/03)

  • Python 3.1(2009/06/27)
  • Python 3.2(2011/02/20)
  • Python 3.3(2012/09/29)
  • Python 3.4(2014/03/16)
  • Python 3.5(2015/09/13)
  • Python 3.6(2016/12/23)
  • Python 3.7(2018/06/27)
  • Python 3.8(2019/10/14)
參考資料:維基百科「History of Python」詞條
希望藉由這個小節的介紹,能讓您瞭解 Python 有 2.x 與 3.x 語法上的區別,以及決定該學習哪個版本的 Python。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
3會員
4內容數
「程式語言也可以輕鬆閒聊!」做為一個學習程式設計 30 年的老骨頭,面對許多人學習程式的急迫與焦慮感,會希望大家放輕鬆!其實程式語言不過是與「電腦星人」日常對話的一種方法而已!期待大家透過這個專題,能一點一滴地解除防衛心,張開雙臂擁抱「電腦」這位新朋友!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
pip和pipenv都是常用的Python套件管理工具,但它們的用途和運作方式略有不同。讓我們來看看它們的差異...
Thumbnail
本文探討Python中函式的定義和作用,重點解釋如何通過函式定義def 來解決重複程式碼的問題,並介紹函式引數的預設值和可變引數的使用。並分析了函式的命名衝突問題,以及函式的作用域管理,特別是全域性和區域性變數的區別。這篇文章將幫助初學者更好地理解Python函式的基礎知識,提升程式碼質量。
Thumbnail
本文介紹了學習Python後,如何將日常自然語言翻譯成程式碼。並運用所學知識解決實際問題。這些練習不僅鞏固了學習者的程式設計能力,還提升解決問題的思維能力。適合所有想要進一步瞭解程式設計邏輯的Python初學者閱讀。
Thumbnail
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
Thumbnail
本文介紹了Python中的 if-elif 和else關鍵字的使用,構建分支結構的方式,以及巢狀結構的概念。文章中還提到Python編碼的最佳實踐,建議儘可能使用扁平化的結構而不是巢狀結構以提高可讀性。
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
pip和pipenv都是常用的Python套件管理工具,但它們的用途和運作方式略有不同。讓我們來看看它們的差異...
Thumbnail
本文探討Python中函式的定義和作用,重點解釋如何通過函式定義def 來解決重複程式碼的問題,並介紹函式引數的預設值和可變引數的使用。並分析了函式的命名衝突問題,以及函式的作用域管理,特別是全域性和區域性變數的區別。這篇文章將幫助初學者更好地理解Python函式的基礎知識,提升程式碼質量。
Thumbnail
本文介紹了學習Python後,如何將日常自然語言翻譯成程式碼。並運用所學知識解決實際問題。這些練習不僅鞏固了學習者的程式設計能力,還提升解決問題的思維能力。適合所有想要進一步瞭解程式設計邏輯的Python初學者閱讀。
Thumbnail
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
Thumbnail
本文介紹了Python中的 if-elif 和else關鍵字的使用,構建分支結構的方式,以及巢狀結構的概念。文章中還提到Python編碼的最佳實踐,建議儘可能使用扁平化的結構而不是巢狀結構以提高可讀性。
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {