python是什麼?為何被稱為膠水語言?

Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麵向對象的腳本語言。

Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。

Python的發展史

Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷蘭國家數學和計算機科學研究所設計出來的。

Python 本身也是由諸多其他語言發展而來的,這包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的腳本語言等等。

像 Perl 語言一樣,Python 源代碼同樣遵循 GPL(GNU General Public License)協議。

現在 Python 是由一個核心開發團隊在維護,Guido van Rossum 仍然佔據著至關重要的作用,指導其進展。

Python 2.7 被確定為最後一個 Python 2.x 版本,它除了支持 Python 2.x 語法外,還支持部分 Python 3.1 語法。

Python語言的特點

Python 特點:簡單易學

Python 是一種代表簡單注意思想的語言,閱讀一個良好的 Python 程序,即使是在 Python 語法要求非常嚴格的大環境下,給人的感覺也像是在讀英語段落一樣。

換句話說,Python 編程語言最大的優點之一,是其具有偽代碼的特質,它可以讓我們在開發 Python 程序時,專注於解決問題,而不是搞明白語言本身。

Python 特點:開源

Python 是 FLOSS(自由/開源源碼軟件)之一,簡單地理解就是,用戶使用 Python 進行開發和發佈自己編寫的程序,不需要支付任何費用,也不用擔心版權問題,即使作為商業用途,Python 也是免費的。

開源正在成為軟件行業的一種發展趨勢,現在有很多商業軟件公司都開始將自己的產品變成開源的(例如 Java)。也許,Python 的開源正是它如此優秀的原因之一,因為會有這麼一群人,他們希望看到一個更加優秀的 Python,從而為了這個目標,不斷地對 Python 進行創造,不斷地改進。

Python 特點:高級語言

Python 是高級語言,因此當使用 Python 語言編寫程序時,我們無需再考慮一些底層細節方面的問題。例如,如何管理程序使用的內存等等。

Python 特點:解釋型語言

一個用編譯型語言(如 C 或 C++)寫的程序,可以從源文件轉換到一個計算機使用的語言。這個過程主要通過編譯器完成。當運行程序的時候,我們可以把程序從硬盤複製到內存中並且運行。

而 Python 語言寫的程序,則不需要編譯成二進制代碼,可以直接從源代碼運行程序。在計算機內部,由 Python 解釋器把源代碼轉換成字節碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。

事實上,由於不再擔心如何編譯程序,使得使用 Python 變得更加簡單,我們只需要將 Python 程序複製到另外一臺計算機上,它就可以工作了。因此,Python 程序更加易於移植。

Python 特點:可移植性

由於 Python 是開源的,它已經被移植到許多平臺上。如果能夠避免使用依賴系統的特性,那就意味著,所有 Python 程序都無需修改就可以在好多平臺上運行,包括 Linux 、Windows、FreeBSD、Solaris 等等,甚至還有 PocketPC、Symbian 以及 Google 基於 Linux 開發的 Android 平臺。

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

Python 特點:面向對象

Python 既支持面向過程編程,也支持面向對象編程。在“面向過程”的語言中(如 C 語言),程序僅僅是由可重用代碼的函數構建起來的;而在“面向對象”的語言(如 C++)中,程序是由數據和功能組合而成的對象構建起來的。

與其他編程語言(如 C++ 和 Java)相比,Python 是以一種非常強大,而又簡單的方式實現的面向對象編程。

Python 特點:強大的功能

Python 強大的功能也許才是很多用戶支持 Python 的最重要的原因,從字符串處理到複雜的 3D 圖形編程,Python 藉助擴展模塊都可以輕鬆完成。

實際上,Python 的核心模塊已經提供了足夠強大的功能,使用 Python 精心設計的內置對象可以完成許多功能強大的操作。

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

Python 特點:可擴展性

Python 的可擴展性體現為它的模塊,Python 具有腳本語言中最豐富和強大的類庫,這些類庫覆蓋了文件 I/O、GUI、網絡編程、數據庫訪問、文本操作等絕大部分應用場景。

Python 可擴展性一個最好的體現是,當我們需要一段關鍵代碼運行的更快時,可以將其用 C 或 C++ 語言編寫,然後在 Python 程序中使用它們即可。

Python 為何被稱為膠水語言?

先從Hello world開始。所有學python的童鞋都會從這句話開始:

print "Hello World!"。

問題來了:為什麼所有語言第一件做的事情,就是Hello World?

其實,他代表了UNIX統一的文本處理模型及接口。這些個玩意,Windows的編程領域是很難接觸到的也很難理解的。

下面寫個範例。比如我這麼幹了:

# file: say.py

import sys

txt

= sys.argv[1]

print "Hello %s!"%(txt)

那麼我就可以在Linux或Mac的終端上直接輸入:

python say.py World

輸出結果就會是:

Hello World!

這樣就確保了,在終端調用上的直觀與可編程性。

這樣,我就不用必須在別的python語言裡面調用python了,而能夠直接在shell上跟其它處理程序直接連接。

BTW,這其實也是Hello world,呵呵。

再玩複雜點的:

file: say2.py

import sys

for line in sys.stdin.readlines():

print "Hello %s!"%(line.strip())

那麼我就可以在終端這麼幹:echo -e 'water/nmaomaol/nkenbing/nlonger/nchuang'|python say3.py

輸出就會是:

Hello water!

Hello maomaol!

Hello kenbing!

Hello longer!

Hello chuang!

再進一步,我可以把前面的內容寫成文件,比如寫成一個這樣的文件:

names.txt

water

maomaol

kenbing

longer

chuang

就可以直接更便捷地做處理:

cat names.txt | python say2.py 這樣,我就用cat命令把文本打印出來,然後輸出到say2.py上去了。

輸出一樣的結果。

但是,我輸入到終端又有什麼用呢???沒錯,到終端的確沒啥用,我們把他輸出到文件吧!

cat names.txt | python say2.py > result.txt

就這樣,結果就保存到了result.txt這個文件裡了。

這樣做的意義是什麼?

意義就是,在終端上我可以隨意地組合他和其它程序,作為一箇中間處理模塊。

而且,他可以如此地簡單便捷,一些簡單的腳本只需要cat一下馬上就能明白是什麼意思。

一個表達式一行代碼,代碼塊有一致的標準的縮進,標準的命名方式,簡練的語言,支持註釋……

別的程序要訪問或調用,很簡單,一個命令把指定數據輸入到這裡就好,然後要怎麼拼接怎麼拼接;

週期性地處理也沒問題,輸出到文件,等待別的程序調用。

比起windows各種詭異的processer,各種詭異的二進制存儲的文件,這樣一致的接口簡直能讓人想哭了。

系統腳本上:

他比SHELL多了很多數學及字符串處理能力,還多了很多很好用的迭代方法,還多了很多的原生的數據結構;

他比PERL多了很要命的代碼可讀性。

比起ruby和nodejs,他基本所有機器都預裝,而且已經經歷了時間的考驗。雖然,將來的確會有被這倆貨代替的可能性。

比起C/C++,他多了一個終端、甚至像ipython這樣的加強版神器終端,可以邊調試代碼邊把沒問題的代碼寫進文件。而且,源碼即可執行。

在我看來,這些就是python的優勢。讓他當之無愧是系統腳本的王者。


分享到:


相關文章: