1. 程式人生 > >Python 教程——編程語言

Python 教程——編程語言

bubuko 就是 標準化 bin 地圖 結果 共軛 維基百科 這一

現有的大部分Python 教程一般都是簡單介紹一下Python的用處,然後就開始講數據結構、控制流、文件輸入輸出、異常等,那對於一些完全不了解什麽是編程語言的朋友來說,就會很難迅速的進入狀態。所以本文主要想介紹一下什麽是編程語言以及Python的主要組成部分,讓大家在學習Python的過程中不會覺得迷茫。 有了這樣的一個大的框架之後,就好像打遊戲的時候的地圖一樣,讓大家在學習的過程知道自己每一步處在什麽位置,以及目標在哪裏。

1. 編程語言的定義

根據維基百科的介紹,編程語言是是用來定義計算機程序的形式語言。它是一種被標準化的交流技巧,用來向計算機發出指令。舉個例子,比如一個中國人要和一個美國人交流的時候,會選擇使用英語來交流,因這樣雙方才能互相理解,那麽人類要和計算機交流的時候,應該用什麽語言呢?這種語言,我們稱之為是編程語言。

2. 低級語言和高級語言

我們知道,計算機只能理解二進制,那使用二進制給機器發送指令的方式就是機器語言(binary language),這是最底層的語言,機器執行起來也最快,但是對於我們人類來說,如果要通過0000 來 告訴計算器去Load,用0001 來告訴計算機去存儲,甚至還要根據計算機處理器的位數來改指令,只怕腦子要爆炸。因此之後提出了匯編語言(assembly language),匯編語言是二進制指令的文本形式,與指令是一一對應的關系。比如,加法指令00000011寫成匯編語言就是 ADD。 匯編語言比機器語言稍微好懂了一點,但是依然更為接近機器的理解模式而不是人類的理解模式。這些語言我們稱之為低級語言(Low level language),因為人類比較難理解他們。在此之後,針對不同的應用,不同的目的,為了讓人類可以更容易的學習和編寫程序,人們提出了成千上萬種高級編程語言( high level language)。比較主流的高級語言有C,C++,C#,Java,Python,Perl,HTML,Javascript,Objective C等等。C主要用來寫操作系統,Java主要用來寫服務器,大數據,安卓app開發等,html寫網頁(html似乎也不能算作一門語言)。這些語言都比較類似英語的語法,所以對於人類來說都更為容易理解和學習。Python相對於C和C++來說更為高級一點,也就是更為接近人類的理解,更為容易學習 。

3. Python的組成

上面提到編程語言的目的是用來定義計算機程序,來讓計算機執行我們希望他執行的一些操作,因此他們都有一些共通的部分,也就是幾乎所有的編程語言都需要有的部分。主要是數據結構、輸入輸出、異常、流程控制、標準庫和擴展庫。

那麽在一個項目中,這些組成部分的作用分別是怎麽樣的呢?我畫了如下的一個圖:

技術分享圖片

這幅圖,我們從裏向外看,在最裏面是一個類似於流程圖的圖,首先是輸入,通常一個程序總是需要去處理一些什麽東西,比如來自網絡的請求,比如從網頁上爬下來的數據,比如從數據庫取出來的數據,比如一張圖片,比如從文件讀取出來的數據,比如用戶輸入的簡單的名字或者數字等等等等。這個通常是一個程序的第一個步驟,獲取這些輸入,得到輸入之後呢,我們就需要把這個數據存儲進去一個容器——數據結構。數據結構是用來存儲數據的內存單元,Python裏主要有三大類數據類型,第一類是基本數據類型(Basic data type),即數字(number)和字符串(string);第二類是Python內置的數據結構,即列表(List),元組(Tuple) 和 字典(Dict);第三類是類(class)。我認為這三類的關系是Class 可以包括 List,Tuple,Dict,Number和String, 而List,Tuple和Dict的元素可以由Number和String組成,其實也可以是一個對象,即Class的實例。三者之間是有種相輔相成的感覺的。數據存儲之後,我們會需要進行一系列的計算操作等,那通常會需要去針對不同的輸入做不同的操作,或者對同一個操作做很多次,這個時候就需要流程控制,Python中的流程控制主要包括了if/else, while, for 以及倆輔助的continue和break。當操作完成之後,我們就可以把這個結果展示出來,這一步就是輸出,可以輸出到GUI上顯示一個圖或者一個數字,可以寫出文件給用戶後續使用,可以返回網絡請求給客戶端等等等等。這就是通常一個程序的流程。那麽我們也知道,在程序的運行過程中可能會出現一些我們在編寫程序的時候並沒有意料到的問題,那遇到這些問題的時候,我們可能希望程序不要直接Crash,而是可以輸出一些信息提示我們有問題,或者不要crash而是進行第二次嘗試等,所以Python提供了一個Exception類來把大部分已有的Exception歸類,並且提供try/except來讓用戶進行異常的處理。 這就是一個程序的幾乎全部的流程。

那麽之所以我們可以使用到List Tuple Dict等等,而不用二進制或者匯編來表示我們想要的數據結構,是因為Python提供了標準庫,也就是Standard Library。這個標準庫定義了我們剛剛提到的前兩類數據結構,定義了很多日常會用到的操作,比如針對字符串的查找,大小寫檢查,split等等,比如針對數學上的求共軛數,求冪等等。因為有了這個庫,我們才能更方便的寫程序,而不用自己從頭開始定義一些常用又很基礎的方法(method)。

除了標準庫之外,很多的開發者還開發出了許多有用又穩定的第三方庫,比如pandas,sqlalchemy等等,這些庫可以幫助大家更好更快速地開發。標準庫和第三方庫給所有的開發者提供了各方面的支持,是開發過程中不可或缺的部分。

以上是我對Python和編程語言的理解,如果有問題,歡迎大家批評指正。

Python 教程——編程語言