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的優勢。讓他當之無愧是系統腳本的王者。
閱讀更多 新睿雲 的文章