Python是什麼,Python語言及其特點簡介

2020-07-16 10:04:44
雖然軟體產業的歷史相對於人類歷史只是白駒過隙,但世界上卻存在非常多的程式語言,「Python」 就是其中之一。

Python 語言算得上一門“古老”的程式語言,Python 流行這麼久,必然有它的獨到之處,本節我們簡單介紹 Python 的相關情況。

Python 簡史

Python 由 Guido van Rossum 於 1989 年年底出於某種娛樂目的而開發, Python 語言是基於 ABC 教學語言的,而 ABC 這種語言非常強大,是專門為非專業程式設計師設計的。但 ABC 語言並沒有獲得廣泛的應用, Guido 認為是非開放造成的。

Python 的“出身”部分影響了它的流行,Python 上手非常簡單,它的語法非常像自然語言,對非軟體專業人士而言,選擇 Python 的成本最低,因此某些醫學甚至藝術專業背景的人,往往會選擇 Python 作為程式語言。

Guido 在 Python 中避免了 ABC 不夠開放的劣勢,Guido 加強了 Python 和其他語言如 C、C++ 和 Java 的結合性。此外,Python 還實現了許多 ABC 中未曾實現的東西,這些因素大大提高了 Python 的流行程度。

2008 年 12 月,Python 發布了 3.0 版本(也常常被稱為 Python 3000,或簡稱 Py3k)。Python 3.0 是一次重大的升級,為了避免引入歷史包袱,Python 3.0 沒有考慮與 Python 2.x 的相容。這樣導致很長時間以來,Python 2.x 的使用者不願意升級到 Python 3.0,這種割裂一度影響了 Python 的應用。

畢竟大勢不可抵擋,開發者逐漸發現 Python 3.x 更簡潔、更方便。現在,絕大部分開發者已經從 Python 2.x 轉移到 Python 3.x,但有些早期的 Python 程式可能依然使用了 Python 2.x 語法。

2009 年 6 月,Python 發布了 3.1 版本。
2011 年 2 月,Python 發布了 3.2 版本。
2012 年 9 月,Python 發布了 3.3 版本。
2014 年 3 月,Python 發布了 3.4 版本。
2015 年 9 月,Python 發布了 3.5 版本。
2016 年 12 月,Python 發布了 3.6 版本。
......

本教學將以 Python 3.x 來介紹 Python 程式設計,也會簡單對比 Python2.x 與 Python 3.x 的語法差異。

目前,由於巨量資料、人工智慧(AI)的流行,Python 變得比以往更加流行。在最新的 TIOBE 程式語言排行榜上, Python 己經迅速上升到第 4 位,僅次於 Java、C、C++。

Java 佔據了世界上絕大部分電商、全融、通訊等伺服器端應用開發,而 C、C++ 佔據了世界上絕大部分貼近作業系統的硬體程式設計,這三門語言的地位太難動搖了。

Python 的特點

Python 是一種物件導向、解釋型、弱型別的指令碼語言,它也是一種功能強大而完善的通用型語言。

相比其他程式語言(比如 Java),Python 程式碼非常簡單,上手非常容易。比如我們要完成某個功能,如果用 Java 需要 100 行程式碼,但用 Python 可能只需要 20 行程式碼,這是 Python 具有巨大吸引力的一大特點。

Python 的兩大特色是清晰的語法和可延伸性:
  • Python 的語法非常清晰,它甚至不是一種格式自由的語言。例如,它要求 if 語句的下一行必須向右縮排,否則不能通過編譯。
  • Python 的可延伸性體現為它的模組,Python 具有指令碼語言中最豐富和強大的類庫(這些類庫被形象地稱為“batteries included ,內建電池”),這些類庫覆蓋了檔案 I/O、GUI、網路程式設計、資料庫存取、文字操作等絕大部分應用場景。

此外,Python 的社群也很發達,即使一些小眾的應用場景,Python 往往也有對應的開源模組來提供解決方案。

Python 作為一門解釋型的語言,它天生具有跨平台的特徵,只要為平台提供了相應的 Python 直譯器,Python 就可以在該平台上執行。

直譯語言幾乎天然是跨平台的。

Python 自然也具有直譯語言的一些弱點:
  1. 速度慢:Python 程式比 Java、C、C++ 等程式的執行效率都要慢。
  2. 原始碼加密困難:不像編譯型語言的源程式會被編譯成目標程式,Python 直接執行源程式,因此對原始碼加密比較困難。

上面兩個問題其實不是什麼大問題,關於第一個問題,由於目前計算機的硬體速度越來越快,軟體工程往往更關注開發過程的效率和可靠性,而不是軟體的執行效率;至於第二個問題,則更不是問題了,現在軟體行業的大勢本來就是開源,就像 Java 程式同樣很容易反編譯,但絲毫不會影響它的流行。