Python探索之旅 | 第一部分第一課:Python是什麼?

作者 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)。
轉載請註明出處。
原文:https://www.jianshu.com/p/2b63eb1c1613

《Python探索之旅》全系列

內容簡介


  1. 前言
  2. 什麼是編程語言
  3. Python 是什麼
  4. 總結
  5. 第一部分第二課預告

1. 前言


如果你決定學習這個系列課程,那我替你感到高興!

因爲我堅信:學一點 Python,以及圍繞 Python 展開的 Web 開發、數據分析和人工智能,等等知識,對於程序員特別是這個時代的程序員來說是非常有好處的。
當然,我不是培訓機構,我不會告訴你 Python 無所不能,不學 Python 就“錯過一個億”,等等。

最近幾年,Python、人工智能、數據分析,等等佔據了各大媒體的頭版頭條,可以算是最熱門的幾個詞彙了。有很多人開始以人工智能創業,不少公司也以高薪聘請人工智能方面的專業人士。但是供需不平衡,目前人工智能方面的人才還很稀缺,專家更是寥寥。

之前我寫過一篇文章:《最近迫切應學的編程語言》,說的就是 Python 語言。

現在,Python 在我國也越來越受重視,很多 Python 相關的職位薪資也不錯,Python 還被編寫進了中小學乃至幼兒園的編程書籍。Python 目前在編程語言排行榜(如 TIOBE 排行榜)中也位列前三。

這個系列教程首先會帶大家學習 Python 這門有趣的語言,入門 Python 的面向對象編程。之後會學習 Python 可以做的不同事情,例如 Python 的著名庫(Numpy,Pandas,Matplotlib,等等)。再到數據分析、Web 開發、人工智能的不同內容。會講到 Python 的更多框架,例如 Django 和 Flask 等 Web 框架;人工智能的一些熱門框架(比如 TensorFlow,PyTorch,等等),再用這些框架來開發一些有趣的應用。Python 在爬蟲領域的使用也會涉及。

如果你已經有一定編程經驗,學過編程語言,那學習這個系列課程會很輕鬆。如果你是還沒入門編程的新人,那也無妨,因爲這個系列教程就和我的大多數教程一樣,都是適合零基礎入門的。

Python 相對容易入門(當然,要精通也有難度),相比於 C 語言、C++ 和 Java 的入門,要輕鬆不少。

我之前寫過一篇文章:《第一門編程語言選什麼好》,裏面講了可以從 C 語言或 Python 入門編程。當然了,也有不少人推薦從 Java 入門,也是不錯的選擇。

如果你想學習 C語言,可以看我的很受歡迎的免費系列教程《C語言探索之旅》。我的其他系列教程請大家在我的賬號中搜索~

在這第一課中,我會首先帶大家瞭解一下 Python 這門語言。我們首先會解釋一下什麼是編程語言,然後我們會回顧一下 Python 的歷史(Python 還是有點“年紀”的),並講解 Python 可以做什麼。

好了,坐好扶穩,我們要發車了~

2. 什麼是編程語言


人類的交流

放心,我們不會討論生物學和哲學的理論,所以請不要離開!

人類的交流是比較容易理解的。你目前正在看我的文章,可以看到很多中文字。

你可以看懂我在寫什麼,那是因爲我們在語言和書寫方面都遵守了某些約定。在中文(或英語、法語,乃至其他語言)中,有語法和拼寫規則。 通過有意識地瞭解這些規則,並根據情況或多或少地善用這些規則,人與人就可以進行交流了。

然而,這些語法和拼寫規則,也是很容易規避的:沒有人可以說自己記住了某種人類語言的所用語法和拼寫的規則。而且,也很少有人特別在意。 畢竟,即使你犯了錯誤,與你交流的人也可以理解你。

如果我們看到的一篇文章裏有幾個錯別字,並不會妨礙我們理解文章的意思。如果有老外用中文和我們交流,即使他們的中文語法不是很標準,發音有點失準,也不妨礙我們理解彼此。

人與電腦的交流,和人與人之間的交流是不一樣的。是的,電腦也可以交流。

你的電腦也會交流


是的,你的計算機(computer,也被稱爲“電腦”)會與你交流,並且你也會與之交流。

雖然,你的計算機應該不會告訴你“我餓了”,“冬天很冷”,“你剛纔播放的電影是部歡樂的喜劇”,等等。

但其實,你和計算機之間的交流也並沒有什麼特別神祕的東西。當你雙擊瀏覽器的應用圖標時,它會被打開。當你點擊瀏覽器應用的左上角或右上角的紅叉時,瀏覽器就知道要被關閉了。

機器語言


我們人類交流最常用的還是語言(Language),比如我們中國人就用中文,國際上用得比較多的語言是英語,也有用西班牙語和法語的,等等。

實際上,你的電腦不管是跟你交流還是自己與自己“對話”,都是基於一門特別的語言:機器語言(Machine Language)。

你也許會說:“好吧,人說人話,機器說機器話。那什麼是機器語言呢?”

計算機可以執行的基本操作是非常基礎的,包括兩個數字的加法,減法,乘法,除法,整數與否。 但是,這五項操作卻是最複雜的仿真軟件或超大型遊戲的底層機制。

所有這些軟件的工作方式基本相同:

  1. 用機器語言編寫的一系列指令組成程序;
  2. 在程序的執行過程中,這些指令向計算機描述了它應該要做什麼(計算機是很“憨”的,可不會猜測)。

一系列指令?這又是什麼意思呢?

例如,如果你單擊瀏覽器的右上角或左上角的紅叉,就可以要求瀏覽器程序關閉。但是,就機器語言而言,僅此一項操作就需要大量機器語言的指令。

你可以想象,用機器語言(也就是二進制語言。二進制語言僅包含 0 和 1)與計算機(計算機只能理解二進制)交談,既不豐富,也不是非常實用,在任何情況下都不是很有趣。

例如,1000100110111101101110001101011100110111101110101011001 也許可以表示“你好”(當然了,這只是假設。我並不知道這一長串二進制碼錶示什麼)。簡而言之,與計算機進行二進制聊天是非常累人的(至少對於我們人類來說)。

爲此,我們發明了編程語言,來簡化與計算機的通信。

編程語言


編程語言(Programming Language)是我們人類更容易理解的語言。編程語言和機器語言的機制是類似的,卻更易於被人類理解。

但是,爲了讓機器能夠理解,還是必須將編程語言寫的程序先翻譯成 0 和 1 的二進制語言(也就是機器語言)。如下圖:

大體來說,程序員“只需要”用所選擇的編程語言編寫代碼行,後面的步驟一般不需要特別操心,你選擇的編程語言的某些軟件和操作系統自會處理。

目前來說,還沒有必要對這些比較複雜的機制進行更多的解釋。如果你未能理解上面所說的詞彙和所有的解釋,對後續課程的學習也並不會有什麼妨礙。但是我覺得給出一些與計算機進行通信的方式的細節是很有趣的。

3. Python 是什麼


編程語言種類繁多,Python 也是一門編程語言。

Python 就相對比較接近人類的自然語言。比 Java,C語言和彙編語言,離機器語言更遠:

這也是 Python 相對容易入門的一大原因。

Python 被稱爲“小白首選高級語言,老鳥必備第二語言”,是一種通用(general-purpose)語言,這意味着它可以用於構建幾乎所有東西!

Python 非常適合用於 Web 後端開發、數據分析、人工智能和科學計算。許多開發人員還使用 Python 構建生產力工具,遊戲和桌面應用程序。

例如:

  • Instagram 是用 Python 構建的。YouTube 也是。

  • Python 是 Google(谷歌)工程師使用的三種官方語言之一(另外兩種是 Java 和 C++)。

  • Netflix 使用 Python 在服務器端支持其數據分析。

  • Dropbox 的桌面客戶端使用了 Python。

  • 國內的知乎、豆瓣、果殼等網站最早是用 Python 寫的。美團、字節跳動等公司,也大量使用了 Python。

對於數據科學(Data Science),由於有許多可用的庫,Python 經常被用於數據操作和可視化。

Python 這門編程語言還算比較年輕,第一個版本是 1991 年發佈的。相比於 1972 年發佈的 C 語言,算是“小夥子”了。

也許有不少人認爲 Java 比 Python “年紀更大”(主要因爲在我們中國,Java 比 Python 更早普及。一開始 Python 也沒有得到太多重視),其實 Python 比 Java 更早出現,Java 是 1995 年由著名的 Sun 公司(已被 Oracle 收購)發佈的。

Python 的作者是荷蘭人,叫 Guido van Rossum(吉多·範羅蘇姆。外號“龜叔”)。見下圖:

可以看到,Python 之父的髮量還是很多的。

而最複雜的編程語言(之一。其實我並不太想加這個“之一”)的 C++ 語言的發明人 Bjarne Stroustrup(本賈尼·斯特勞斯特盧普)的髮量就有點尷尬了,見下圖:

所以說,“C++ 之難,難於上青天”,此話不假。

當然了,這是玩笑話。編程語言的發明人的髮量並不能作爲語言難易程度的衡量標準。

Python 誕生的小歷史


1989 年,在一個寒冷的夜裏,來自荷蘭的開發者 Guido van Rossum 感到很無聊。他正在尋找一種在聖誕節打發時間的方法,因爲他的公司在聖誕節期間不開門。

當人們正在準備聖誕節,佈置聖誕樹時,他卻用自己的電腦(蘋果 的 Mac 電腦)發明了一種語言(嚴格地說,是開始用 C語言來編寫 Python 的編譯器)。作爲喜劇團體 Monty Python 的忠實擁護者,他將這門新的編程語言命名爲 Python。這也是爲什麼 Python 開發人員大多“具有幽默感”(參看 Python 官網的 https://www.python.org/doc/humor “幽默”欄目)並樂於在他們的代碼中放置一些小玩笑的原因。

2001 年,Python 的非營利組織 Python Software Foundation(Python 軟件基金會) 成立了。

Python 的官網是 https://www.python.org 。

Python 在英語中是“巨蟒”的意思,因此 Python 的 logo 使用了“蠢萌”的大蟒蛇,儘管它的命名與蟒蛇並沒有什麼關係。

Python 可以做什麼?


Python 是一種功能強大的語言,既易學又具有豐富的可能性。

一旦你將 Python 安裝到計算機上,你便擁有了許多功能,因爲這些功能是集成在這門語言中的。而且,我們之後會看到,擴展 Python 的現有功能也非常容易。因此,存在所謂的庫(library)來幫助開發人員處理特定項目。例如,可以安裝各種圖形庫來用 Python 開發圖形界面。

具體來說,我們可以使用 Python 創建如下的東西:

  • 小型、非常簡單的程序,通常稱爲腳本(script),在計算機上具有非常特定的任務。我們公司就用了不少 Python 的腳本,用於代碼審查、編譯之類的工作。

  • 完備的程序,例如遊戲,辦公套件,多媒體軟件,電子郵件客戶端,等。

  • 非常複雜的項目,例如軟件組合(可以協同工作的幾種軟件的集合,主要在專業領域中使用)。

Python 和其龐大的庫也給了我們實現很多任務的可能:

  • 創建圖形界面;
  • 通過網絡傳播信息;
  • 與你的操作系統進行高級通信;
  • 等等。

當然了,你不可能一下子學會所有這些。但這門課程會讓你掌握足夠多的基礎,以便之後你可以開發大型 Python 項目。

一門解釋型的編程語言


Python 是一門解釋型的編程語言,也就是說,你發送給它的指令在被讀取時會被“轉錄”(解釋)爲機器語言。

另外,也有一些編程語言(例如 C語言和 C ++)被稱爲編譯型語言,因爲在執行它們之前,需要專門的軟件負責將程序代碼轉換爲機器語言,此步驟被稱爲“編譯”(compilation)。每次更改代碼後,都必須重新調用編譯步驟。

解釋型語言的優點是簡單(在執行程序之前不會經過編譯步驟)和跨平臺性(如 Python 之類的語言在 Windows、Linux 或 macOS 等操作系統下都能很好地工作,而且你不必爲了從一個操作系統轉到另一個系統而進行任何代碼更改)。

這並不意味着編譯型語言不是跨平臺的,但是你必須使用不同的編譯器。並且從一個操作系統到另一個操作系統,某些指令是不兼容的,運行的結果會有所不同。

不過,事實證明,編譯型語言比解釋型語言要快得多(因爲即時翻譯程序會減慢執行速度)。儘管隨着不斷的改進,編譯型語言和解釋型語言的速度差異會越來越小。此外,你需要在操作系統上安裝 Python(解釋器),以便計算機可以理解你的代碼。

不同版本的 Python


自 2001 年 Python Software Foundation 被創建以來,經年累月,Python 語言經歷了一系列的版本改動。這些版本被稱爲 Python 2.x(例如,2.3,2.5,2.6,2.7)。

然而,2009 年 2 月 13 日,Python 的 3.0.1 版本發佈。3.0.1 版本破壞了以往版本中普遍存在的向後兼容性(Backwards compatibility)。

一般來說,當程序員們開發一門編程語言的新版本時,總會避免刪除或修改過多的舊功能,以便向後兼容(也就是以前用這門語言的舊版本編寫的程序也可以運行在新版本上)。

自此,Python 2 和 Python 3 就有點“分道揚鑣”了。Python 2 和 Python 3 的不兼容性也是以往 Python 被詬病的一大原因。

萬幸的是,Python 2 版本在 2020 年 1 月 1 日已經正式停止官方更新了。

因此,我強烈建議你直接學習 Python 3 版本,不需要理會 Python 2 版本了。

在這個系列課程中,我們也會用最新穩定的 Python 3 版本。

4. 總結


  • Python 是一門解釋型語言,和 C語言,C++ 等編譯型語言是不同的。

  • 我們可以使用 Python 來創建幾乎所有類型的程序,例如遊戲、繪圖、爬蟲,等等。

  • Python 的一個強大之處是它的庫(library)非常多,衆多優秀的庫大大增加了 Python 的可能性。

  • Python 是跨平臺的,可以運行在幾乎所有操作系統上,例如 Windows,Linux,macOS,Unix,等等。

5. 第一部分第二課預告


今天的課就到這裏,一起加油吧!

下一課:Python探索之旅 | 第一部分第二課:安裝Python和Python的常用開發軟件


我是 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)運營者,慕課網精英講師 Oscar 老師,終生學習者。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向着標杆直跑」

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章